我如何定义一个抽象小部件?

问题描述 投票:1回答:1

由于Dart / Flutter使用合成样式的方法来构建小部件(将其与作用域模型的运行方式相结合),什么是开发封装小部件的对象库的良好模式?

假定您有一个应用程序,该应用程序允许您在列表视图中显示对象的列表,每个对象都有自己的方式来显示其信息,但是所有对象都具有相同的显示方式。

考虑以下伪代码,该方法采用封装所有必需的小部件以及每个对象遵循的其他此类属性/方法的方法。

abstract class Vehicle {
  int type;
  String name;
  Widget listWidget
  Widget editWidget
  Widget settingsWidget
}

class Truck extends Vehicle {
  type = 1
  name = "Truck"
  listWidget = ... My truck widget for within lists...
  editWidget = ... My truck edit widget ...
  settingsWidget = ... My truck settings display ...
}

class Car extends Vehicle {
  type = 1
  name = "Car"
  listWidget = ... My car widget for within lists...
  editWidget = ... My car edit widget ...
  settingsWidget = ... My car settings display ...
}

使用这种方法,那么我将不得不创建每种车辆类型并遵循抽象的api模式,而不必担心它如何呈现。

[在显示列表中的车辆(例如ListView)时,此方法将允许对象本身决定如何在该列表中呈现它,并且它对于每种类型的车辆都是唯一的。

例如:

    Container(
        child: new ListView.builder(
            itemCount: items.length,
            itemBuilder: (BuildContext ctxt, int index) {
                return items[index].listWidget;
            }
        )
    )

这是完成此任务的有效Dart / Flutter方式,还是应该遵循的更好模式?

我是否违反Dart建议的编码模式,因为每个小部件都会控制自己的显示?

其背后的想法是,如果需要根据车辆的类型对设置面板进行不同的格式化,我可以这样做,而不是试图弄清楚如何为所有小部件创建通用的显示模式。

想法?

design-patterns flutter dart
1个回答
0
投票

我认为您真正想要的是这样的东西,我将使用Flutter Dart代码代替伪代码:

© www.soinside.com 2019 - 2024. All rights reserved.