Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 多供应商在视图颤振中的问题_Flutter_Flutter Dependencies_Provider - Fatal编程技术网

Flutter 多供应商在视图颤振中的问题

Flutter 多供应商在视图颤振中的问题,flutter,flutter-dependencies,provider,Flutter,Flutter Dependencies,Provider,当我启动应用程序时,我的multiprovider在Flatter中出现问题: 'children != null && children.isNotEmpty': is not true 错误: 生成应用程序时引发了以下断言(脏): “package:nested/nested.dart”:失败的断言:第72行第16位:“children!”null&&children.isNotEmpty':不为真。 导致错误的相关小部件已被删除 应用 lib\main.dart:8 当抛

当我启动应用程序时,我的multiprovider在Flatter中出现问题:

'children != null && children.isNotEmpty': is not true
错误:

生成应用程序时引发了以下断言(脏): “package:nested/nested.dart”:失败的断言:第72行第16位:“children!”null&&children.isNotEmpty':不为真。 导致错误的相关小部件已被删除 应用 lib\main.dart:8 当抛出异常时,这是堆栈 #2个新的嵌套 包:嵌套/嵌套。省道:72

守则:

class Application extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: providers,
      child: _application(context),
    );
  }

  Widget _application(BuildContext context) {
    return MaterialApp(
      title: 'Simple Rest API',
      initialRoute: '/',
      routes: {
        '/': (context) => TeamsView(),
      },
    );
  }
}
编辑:

我的DI:

List<SingleChildWidget> providers = [
  ...services,
  ...datas,
  ...repositories,
  ...usescases,
];

List<SingleChildWidget> services = [];

List<SingleChildWidget> datas = [];

List<SingleChildWidget> repositories = [];

List<SingleChildWidget> usescases = [];

class ViewModelBuilder {
  static final _instances = {TeamsViewModel: () => TeamsViewModel()};

  static ViewModel instanciate(Type type) {
    return _instances[type]();
  }
}

如果您需要其他代码,请询问我。

根据,列表中的提供程序的结构应如下所示:

MultiProvider(
  providers: [
    Provider<Something>(create: (_) => Something()),
    Provider<SomethingElse>(create: (_) => SomethingElse()),
    Provider<AnotherThing>(create: (_) => AnotherThing()),
  ],
  child: someWidget,
)
MultiProvider(
供应商:[
提供者(创建:(\u)=>Something()),
提供程序(创建:()=>SomethingElse()),
提供程序(创建:(\u)=>AnotherThing()),
],
孩子:一些小部件,
)
换句话说,您应该提供
create
方法


您也没有给出提供者列表,而是给出了一个值列表。

问题是您的
SingleChildWidget
s列表是空的(因为它是销毁4个空列表的结果)。您必须至少提供一个SingleChildWidget。

您能为“提供者”添加代码吗?我编辑了@Daniel
class TeamsViewModel extends ViewModel {
  BuildContext _context;
  void load(BuildContext context, List args) async {
    _context = context;
    setLifecycle(OnLoad());
    setLifecycle(OnLoaded());
  }
}

MultiProvider(
  providers: [
    Provider<Something>(create: (_) => Something()),
    Provider<SomethingElse>(create: (_) => SomethingElse()),
    Provider<AnotherThing>(create: (_) => AnotherThing()),
  ],
  child: someWidget,
)