[英]Problem with declaration multiprovider in view flutter
當我啟動我的應用程序時,我在 flutter 中的 multiprovider 出現問題:
'children != null && children.isNotEmpty': is not true
錯誤:
在構建應用程序(臟)時拋出了以下斷言:'package:nested/nested.dart':斷言失敗:第 72 行 pos 16:'children.= null && children:isNotEmpty'。 不是真的。 相關的導致錯誤的小部件是 Application lib\main:dart,8 拋出異常時:這是堆棧 #2 new Nested package.nested/nested:dart: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]();
}
}
我的觀點:
class TeamsView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return View<TeamsViewModel>(
args: [],
builderView: (context, model, child) => _buildView(context, model),
);
}
}
Widget _buildView(BuildContext context, TeamsViewModel model) {
return Scaffold(
appBar: AppBar(
title: Text("Test"),
),
body: Center(
child: Text("Premier lancement"),
),
);
}
我的觀點 model:
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,
)
換句話說,您應該提供create
方法。
您也沒有提供提供者列表,而是提供值列表。
問題是您的SingleChildWidget
列表是空的(因為它是破壞 4 個空列表的結果)。 您必須提供至少一個 SingleChildWidget。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.