Flutter 在flatter和Dart中重构小部件的最优雅、最有效的方法

Flutter 在flatter和Dart中重构小部件的最优雅、最有效的方法,flutter,dart,refactoring,Flutter,Dart,Refactoring,在网上搜索“如何重构颤振小部件”时,我发现存在两种可能的方式,根据我的测试,这两种方式都在发挥作用,从结构的角度来看,仍然非常不同。第二种方法,确实包括额外的构建指令,这会给应用程序性能带来进一步的负担,对吗 这是我想要重构的代码: Container( child: Column( children: <Widget> [ [long code to create a button with many properties],

在网上搜索“如何重构颤振小部件”时,我发现存在两种可能的方式,根据我的测试,这两种方式都在发挥作用,从结构的角度来看,仍然非常不同。第二种方法,确实包括额外的构建指令,这会给应用程序性能带来进一步的负担,对吗

这是我想要重构的代码:

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],
        ],),);
2) :


<强>哪一个是最好的方法?< /强>

< p>请查看并考虑另一个问题:

简短回答:第二种方法更好(既高效又优雅)


第一个方法(提取到函数)中,您只需创建一个返回封装小部件的函数

第二个方法(提取到一个类)中,您将小部件提取到一个新类,该类从
无状态小部件扩展而来。这种差异为颤振框架提供了一种进行优化的方法

Widget MyButton(Color color, String text) {
    return [long code to create a button with many properties];
}
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];
    }
}