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

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

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

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

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

创建按钮文件

  1. 在项目的 lib 目录下,创建一个名称为 widget 新文件夹:
  1. lib/widget 文件夹下,创建一个 my_button.dart 的新文件:
  1. 打开 lib/widget/my_button.dart 文件,添加下面的导入命令:
dart 复制代码
import 'package:flutter/material.dart';
  1. 继续在导入命令下面,输入 stless,会出现如下提示:
  1. 接着,按下回车键,编辑器会自动生成如下代码:
  1. 在自动生成代码的光标处,输入类名称 MyButton, 按下回车键,产生的代码如下所示:
dart 复制代码
import 'package:flutter/material.dart';  
  
class MyButton extends StatelessWidget {  
  const MyButton({super.key});  
  
  @override  
  Widget build(BuildContext context) {  
    return const Placeholder();  
  }  
}

迁移按钮代码

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

替换按钮代码

  1. 打开 main.dart 文件,在文件的开头,加入下面的导入命令:
dart 复制代码
import 'package:hello_world/widget/my_button.dart';
  1. 继续在 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 '重构按钮控件到独立文件。'
相关推荐
Shi_haoliu6 小时前
openClaw源码部署-linux
前端·python·ai·openclaw
程序员小寒6 小时前
前端性能优化之白屏、卡顿指标和网络环境采集篇
前端·javascript·网络·性能优化
烛阴6 小时前
Claude CLI AskUserQuestion 工具详解:让 AI 开口问你
前端·claude
wal13145207 小时前
OpenClaw教程(九)—— 彻底告别!OpenClaw 卸载不残留指南
前端·网络·人工智能·chrome·安全·openclaw
mon_star°7 小时前
在TypeScript中,接口MenuItem定义中,为什么有的属性带问号?,有的不带呢?
前端
牛奶7 小时前
分享一个开源项目,让 AI 辅助开发真正高效起来
前端·人工智能·全栈
次顶级8 小时前
表单多文件上传和其他参数处理
前端·javascript·html
why技术8 小时前
我拿到了腾讯QClaw的内测码,然后沉默了。
前端·后端
牛马1119 小时前
Flutter CustomPainter
flutter