在 Flutter 和 Dart 中重构小部件的最优雅/高效的方式
Posted
技术标签:
【中文标题】在 Flutter 和 Dart 中重构小部件的最优雅/高效的方式【英文标题】:Most elegant/efficient way to refactor widgets in Flutter and Dart 【发布时间】:2020-04-17 22:28:56 【问题描述】:在网上搜索“如何重构 Flutter 小部件”,我发现存在两种可能的方式,根据我的测试,它们都可以正常工作,但从结构的角度来看仍然非常不同。第二种方法,确实包含了额外的构建指令,应该会给应用性能带来更大的负担吧?
这是我要重构的代码:
Container(
child: Column(
children: <Widget> [
[long code to create a button with many properties],
[long code to create a button with many properties],
[long code to create a button with many properties],
[long code to create a button with many properties],
],),);
这些是我发现的主要方式:
1):
Widget MyButton(Color color, String text)
return [long code to create a button with many properties];
2):
class MyButton extends StatelessWidget
MyButton(this.color, this.text);
final Color color;
final String text;
@override
Widget build(BuildContext context)
return [long code to create a button with many properties];
哪种方法最好?
【问题讨论】:
【参考方案1】:请查看并考虑这个其他问题:
What is the difference between functions and classes to create reusable widgets?
简答:第二种方法更好(既高效又优雅)。
在第一种方法(提取到函数)中,您只是创建了一个返回封装小部件的函数。
在第二种方法(提取到类)中,您将小部件提取到从StatelessWidget
扩展的新类。这种差异为 Flutter 框架提供了一种优化方式。
【讨论】:
以上是关于在 Flutter 和 Dart 中重构小部件的最优雅/高效的方式的主要内容,如果未能解决你的问题,请参考以下文章
如何从另一个 dart 文件中调用有状态小部件(有表单)方法?- Flutter
从原生 Android 主屏幕小部件调用 Flutter (Dart) 代码
Dart/flutter 小部件测试,无论是按键还是文本都找不到文本小部件