dart 工厂

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

我是 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 能做到这一点吗?

flutter dart factory
1个回答
0
投票

您可以使用以下代码来完成。在这里,我将

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();
  }
}

如果您对此有任何疑问,请告诉我。

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