Flutter 3 基础07: 重构按钮代码

262 阅读2分钟

在上一篇文章中,我们成功添加了一个按钮控件。当然,我们还会学习和添加更多控件。但是,随着增加的控件变多,就会让 main.dart 文件中的代码变得臃肿,严重影响代码质量。

本文就会对代码进行一次重构,把按钮控件的代码迁移到独立文件中。

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

Screenshot_20231016_222851.png

现在,让我们动手完成重构工作。

创建按钮文件

  1. 在项目的 lib 目录下,创建一个名称为 widget 新文件夹:

Pasted image 20231017120226.png

  1. lib/widget 文件夹下,创建一个 my_button.dart 的新文件:

Pasted image 20231017120444.png

  1. 打开 lib/widget/my_button.dart 文件,添加下面的导入命令:
import 'package:flutter/material.dart';
  1. 继续在导入命令下面,输入 stless,会出现如下提示:

Pasted image 20231017120627.png

  1. 接着,按下回车键,编辑器会自动生成如下代码:

Pasted image 20231017120949.png

  1. 在自动生成代码的光标处,输入类名称 MyButton, 按下回车键,产生的代码如下所示:
import 'package:flutter/material.dart';  
  
class MyButton extends StatelessWidget {  
  const MyButton({super.key});  
  
  @override  
  Widget build(BuildContext context) {  
    return const Placeholder();  
  }  
}

迁移按钮代码

  1. 找到并打开 main.dart 文件,定位到下面的代码并拷贝:
MaterialButton(  
  textColor: Colors.white,  
  color: Colors.green,  
  shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(30.0)),  
  onPressed: () {  
    print('按钮被点击');  
  },  
  child: const Text('显示'),  
)
  1. 回到 my_button.dart 文件,找到下面的代码:
return const Placeholder();  
  1. 删除 const Placeholder() 这部分代码,粘贴我们刚才拷贝的代码:
@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('显示'),  
  );  
}

替换按钮代码

  1. 打开 main.dart 文件,在文件的开头,加入下面的导入命令:
import 'package:hello_world/widget/my_button.dart';
  1. 继续在 main.dart 文件中,找到刚才拷贝的代码,并删除这些代码,替换为如下代码:
MyButton()

这部分完整的代码如下:

// 创建一组彩色的容器  
static List<Widget> pages = <Widget>[  
  Container(color: Colors.red),  
  Container(  
      child: const MyButton()),  
  Container(color: Colors.blue)  
];

这样,我们的代码清爽了许多。不管以后按钮代码变得多复杂,这里依旧整洁。

验证效果

热重启项目,点击部件导航图标,按钮依然正常显示(当然,与重构之前没有变化),点击按钮,控制台也能够正常输出。重构成功。

部件页面:

Screenshot_20231016_222851.png

控制台输出:

Pasted image 20231017123758.png

提交代码

我们已经完成了按钮控件的重构,又到达了一个小小的里程碑,应该对代码进行提交,保持良好编程习惯。

git add .
git commit -m '重构按钮控件到独立文件。'