2

我有一个 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(..);

这是颤振/飞镖中的不良模式吗?如果是,我该如何更改?

4

4 回答 4

2

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

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 
}

这样您就可以使用任意数量的全局小部件。您只需要导入此文件,就可以访问任何可重用的小部件,并且在整个应用程序生命周期中不会有静态引用。

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

于 2019-12-14T04:13:03.883 回答
1

我不清楚这是否会破坏更改检测。如果您破坏更改检测,您将获得非常低效的代码(构建过多)或损坏的代码(构建不足)。

于 2019-12-13T20:27:46.810 回答
0

只要您的静态方法是纯函数,这样做就不是一个坏习惯。

于 2019-12-14T04:05:17.453 回答
0

,这不是一个糟糕的模式,因为创建自定义小部件并不是一个糟糕的模式。您的辅助静态方法和自定义小部件都只是创建小部件的新实例。所以使用静态方法在你的应用程序屏幕上创建新的小部件是完全可以的

于 2019-12-14T03:24:12.993 回答