Flutter 3 基础08: 添加文本框

在前两篇文章中,我们为页面添加了一个按钮并优化了代码质量,可以让我们更健壮地添加更多部件。

本文将继续为部件页面增添一个新的部件------文本框,进一步丰富页面。

启动 Android Studio,打开 hello_world 项目,运行虚拟机,这样就可以实时看到编码产生的效果。现在,我们依然只能看到部件页面的绿色按钮。

添加文本输入控件

  1. 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 '添加一个文本框。'
相关推荐
0思必得03 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
向哆哆4 小时前
打造高校四六级报名管理系统:基于 Flutter × OpenHarmony 的跨端开发实践
flutter·开源·鸿蒙·openharmony·开源鸿蒙
2501_940007894 小时前
Flutter for OpenHarmony三国杀攻略App实战 - 设置功能实现
flutter
东东5164 小时前
智能社区管理系统的设计与实现ssm+vue
前端·javascript·vue.js·毕业设计·毕设
catino4 小时前
图片、文件的预览
前端·javascript
lbb 小魔仙5 小时前
【Harmonyos】开源鸿蒙跨平台训练营DAY9:获取分类数据并渲染
flutter·华为·harmonyos
mocoding5 小时前
Flutter 3D 翻转动画flip_card三方库在鸿蒙版天气预报卡片中的实战教程
flutter·3d·harmonyos
layman05286 小时前
webpack5 css-loader:从基础到原理
前端·css·webpack
半桔6 小时前
【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
前端·css·html
AI老李6 小时前
PostCSS完全指南:功能/配置/插件/SourceMap/AST/插件开发/自定义语法
前端·javascript·postcss