组织Flutter小部件的最佳方法是什么

时间:2018-03-17 15:32:21

标签: dart flutter

我正在编写一个Flutter应用程序,我想知道什么是使我的代码更具可读性的最佳方法 现在我知道这两种方法:

  1. 创建最终变量并在其上存储自定义小部件
  2. 创建一个新的小部件作为模板
  3. 那么推荐的方法是什么?

1 个答案:

答案 0 :(得分:4)

至于:

  
      
  1. 创建最终变量并在其上存储自定义小部件
  2.   

使用类变量来保存小部件,例如

final Widget foo = new Foo();

可能没有必要或可能指向其他一些问题。我认为你最好创建一个返回你的小部件的函数,比如

Widget _buildFoo() {
  return new Foo();
}

然后你可以使用它,例如,你的build()方法,例如(我正在添加MaterialApp Scaffold以提供更多上下文)

@override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text("My App"),
      ),
      body: _buildFoo(),
    );
  }

请查看网络上的其他示例应用,例如Flutter Examples,了解有关构建小部件的想法。

至于:

  
      
  1. 创建一个新的小部件作为模板
  2.   

我将此解释为创建另一个文件以保存您的窗口小部件类,例如foo.dart。这可能不是您要求的,但随着您的应用程序的增长,为每个小部件创建新的dart文件可能会成为一个好主意。对于简单的应用程序,尤其是您看到的大多数示例应用程序,将这些类保留在同一个dart文件中(例如main.dart)可以正常工作。同样,我可能没有解决你的问题。

回到:

  

使我的代码更具可读性的最佳方法

因此,总而言之,使用返回窗口小部件树的不同部分的私有函数(即只返回窗口小部件及其可能包含的任何子窗口小部件的函数)通常比将窗口小部件存储为类实例变量更好。如果您需要稍后引用或与窗口小部件交互,您可能希望使用类变量;但是,这可能是一种不好的做法,并且可能指向一种更好的方法来处理状态的更改和窗口小部件树的结构(例如,Flutter的有状态和继承的窗口小部件非常适合处理状态更改,需要进行命令性调用在对象引用上。)