Flutter/dart 和静态 Widget 方法。坏模式?

标签 flutter dart

我有一个 ui.dart 文件和 UIBuilder.class:

class UI {

  static Widget buildButton(String text, VoidCallback onPressed, {double width, ...}) {
    return SizedBox(
        width: width,
        child: RaisedButton(
             ...
            onPressed: onPressed));
  }

  ... 
  static Widget buildOtherWidget(...)
  ....

}

然后在大量的Screen/Page中调用即可:

var btn = UI.buildButton(..);

在 flutter/dart 中这是一个不好的模式吗?如果是,我该如何更改?

最佳答案

我认为如果您创建一个单独的文件来创建所有可重用的小部件,效率会更高,例如,

import 'package:flutter/material.dart';

Widget buildButton(String text, VoidCallback onPressed, {double width, ...}) {
    return SizedBox(
        width: width,
        child: RaisedButton(
             ...
            onPressed: onPressed));
  }

Widget buildSecondWidget(){
// block of code 
}

Widget buildThirdWidget(){
// block of code 
}

通过这种方式,您可以获得任意数量的全局小部件。您只需导入此文件即可访问任何可重用小部件,并且在整个应用程序生命周期中不会有静态引用。

所以我认为这种方法比在类中创建有状态小部件更有效。

关于Flutter/dart 和静态 Widget 方法。坏模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59293166/

相关文章:

firebase - 如何检索列表中选定的项目以在详细页面 Flutter 中显示其详细信息

通过容器的图像

dart - 当我只设置一次时,我的变量会自动更新。为什么会这样?

flutter - 从自定义警报对话框获取回调

dart - Dart 中的静态函数 - 只调用一次

string - Flutter 拆分并使特定单词加粗

flutter - 如何在 BottomNavigationBar 中的小部件元素内添加 TabBarView

flutter - _launchURL 在我的小部件构建时启动

dart - 下载数据并保存在本地

Flutter Streambuilder 到数据表标题重复