在前两篇文章中,我们为页面添加了一个按钮并优化了代码质量,可以让我们更健壮地添加更多部件。
本文将继续为部件
页面增添一个新的部件------文本框,进一步丰富页面。
启动 Android Studio,打开 hello_world
项目,运行虚拟机,这样就可以实时看到编码产生的效果。现在,我们依然只能看到部件
页面的绿色按钮。
添加文本输入控件
- 在
lib/widget
文件夹下,打开my_button.dart
文件,定位到下列代码:
dart
return MaterialButton(
textColor: Colors.white,
color: Colors.green,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(30.0)),
onPressed: () {
print('按钮被点击');
},
child: const Text('显示'),
);
并替换为以代码:
dart
return Column(
children: [
const TextField(),
MaterialButton(
textColor: Colors.white,
color: Colors.green,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(30.0)),
onPressed: () {
print('按钮被点击');
},
child: const Text('显示'),
)
],
);
这里,我们需要返回文本框和按钮两个部件,所以使用了一个列布局容器 Column
进行包装。 Column
会将放入其中的子部件进行竖直排列,因此,我们的文本框会位于按钮的上方。
热重启项目,可以看到,文本框已经出现在部件
页面上:
设置容器填充
通过观察页面我们发现,文本框与页面两侧紧挨在一起,不利于用户操作和阅读内容。现在我们来增加一些间隙。
在 main.dart
文件中,定位到以下列码:
dart
child: const MyButton()),
在这行代码的上面,添加下面的代码:
dart
padding: const EdgeInsets.all(8.0),
这里,我们为容器的四边添加了 8 像素的填充,避免容器与其子部件紧贴在一起。
热重启项目。我们可以看到,文本框左右两端与页面两侧边界之间留出了空白。
美化文本框
如果你觉得文本框的默认样式(像极了下划线)不太像一个"框",我们可以进行一些优化。
在 my_button.dart
文件中,定位到下列代码:
dart
const TextField(),
并替换为以下代码:
dart
const TextField(
decoration: InputDecoration(
border: OutlineInputBorder(),
hintText: "请输入一些文字。"),
),
这里,我们通过文本框的 decoration
属性,其值是一个 InputDecoration
类的实例,用来装饰文本框:
border
: 设置文本框的边框样式。hintText
: 设置文本框的输入提示文字,即占位符。
热重启项目。我们可以看到,文本框变身为圆角矩形框并提示用户输入一些内容。
重构按钮文件
这时候,我们发现 my_button.dart
文件已经混入了文本框,不单纯是按钮代码了,而且会加入更多部件。因此,我们需要进行重命名操作,与文件内容匹配。
- 把
my_button.dart
重命名为my_widgets.dart
. - 把
MyButton
重命名为MyWidgets
.
重命名操作详细步骤,可以参考 Flutter 3 基础03: 初始化"自己"的 Flutter 项目
提交代码
我们已经完成了文本框的添加,又到达了一个小小的里程碑,应该对代码进行提交,保持良好编程习惯。
shell
git add .
git commit -m '添加一个文本框。'