在上一篇文章中,我们成功添加了一个按钮控件。当然,我们还会学习和添加更多控件。但是,随着增加的控件变多,就会让 main.dart
文件中的代码变得臃肿,严重影响代码质量。
本文就会对代码进行一次重构,把按钮控件的代码迁移到独立文件中。
启动 Android Studio,打开 hello_world
项目,运行模拟器,这样就可以实时看到编码产生的效果。现在,我们能看到部件导航页面的绿色按钮。
现在,让我们动手完成重构工作。
创建按钮文件
- 在项目的
lib
目录下,创建一个名称为widget
新文件夹:
- 在
lib/widget
文件夹下,创建一个my_button.dart
的新文件:
- 打开
lib/widget/my_button.dart
文件,添加下面的导入命令:
dart
import 'package:flutter/material.dart';
- 继续在导入命令下面,输入
stless
,会出现如下提示:
- 接着,按下回车键,编辑器会自动生成如下代码:
- 在自动生成代码的光标处,输入类名称
MyButton
, 按下回车键,产生的代码如下所示:
dart
import 'package:flutter/material.dart';
class MyButton extends StatelessWidget {
const MyButton({super.key});
@override
Widget build(BuildContext context) {
return const Placeholder();
}
}
迁移按钮代码
- 找到并打开
main.dart
文件,定位到下面的代码并拷贝:
dart
MaterialButton(
textColor: Colors.white,
color: Colors.green,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(30.0)),
onPressed: () {
print('按钮被点击');
},
child: const Text('显示'),
)
- 回到
my_button.dart
文件,找到下面的代码:
dart
return const Placeholder();
- 删除
const Placeholder()
这部分代码,粘贴我们刚才拷贝的代码:
dart
@override
Widget build(BuildContext context) {
return MaterialButton(
textColor: Colors.white,
color: Colors.green,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(30.0)),
onPressed: () {
print('按钮被点击');
},
child: const Text('显示'),
);
}
替换按钮代码
- 打开
main.dart
文件,在文件的开头,加入下面的导入命令:
dart
import 'package:hello_world/widget/my_button.dart';
- 继续在
main.dart
文件中,找到刚才拷贝的代码,并删除这些代码,替换为如下代码:
dart
MyButton()
这部分完整的代码如下:
dart
// 创建一组彩色的容器
static List<Widget> pages = <Widget>[
Container(color: Colors.red),
Container(
child: const MyButton()),
Container(color: Colors.blue)
];
这样,我们的代码清爽了许多。不管以后按钮代码变得多复杂,这里依旧整洁。
验证效果
热重启项目,点击部件导航图标,按钮依然正常显示(当然,与重构之前没有变化),点击按钮,控制台也能够正常输出。重构成功。
部件页面:
控制台输出:
提交代码
我们已经完成了按钮控件的重构,又到达了一个小小的里程碑,应该对代码进行提交,保持良好编程习惯。
shell
git add .
git commit -m '重构按钮控件到独立文件。'