我是 Dart 新手。我来自 Java,那里有一些我想模仿的东西。 我有一个具有多个屏幕的项目,每个屏幕都有多个主体。 举个例子: 屏幕UMW0001 本体:0001 本体:0002 本体:0003
我想根据身体构建那些小部件。 我有一个小部件叫BuildBody,今天他是这样的:
String body = autorization.getBody("UMW0001");
switch (body) {
case '0002':
return const detalhe_0002.Detalhe();
default:
return const detalhe_0001.Detalhe();
}
我想通过使用某种工厂来构建正确的身体来改进这一点,比如
String body = "0002";
Widget widget = methodToCreateWidget("page/umw0001/$body");
return widget();
flutter 能做到这一点吗?
您可以使用以下代码来完成。在这里,我将
buildBody
作为更高级别的函数,如果您愿意,您可以将其放入任何类并将其设为静态,并且也可以在构造函数中执行此操作。
class Detalhe0001 extends StatelessWidget {
const Detalhe0001({super.key});
@override
Widget build(BuildContext context) {
return const Center(
child: Text('Detalhe 0001'),
);
}
}
class Detalhe0002 extends StatelessWidget {
const Detalhe0002({super.key});
@override
Widget build(BuildContext context) {
return const Center(
child: Text('Detalhe 0002'),
);
}
}
void main() {
String body = "0002";
Widget widget = buildBody("page/umw0001/$body");
runApp(
MaterialApp(
home: Scaffold(
body: widget,
),
),
);
}
Widget buildBody(String body) {
switch (body.split('/').last) {
case '0002':
return const Detalhe0002();
default:
return const Detalhe0001();
}
}
如果您对此有任何疑问,请告诉我。