Flutter 多供应商在视图颤振中的问题
当我启动应用程序时,我的multiprovider在Flatter中出现问题: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 当抛
'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,
)