#flutter #flutter-provider
Вопрос:
Привет, я пытаюсь добавить нового поставщика на корневом уровне моего приложения. Однако функция создания нового поставщика (в данном случае более легко представленная Поставщиком типа int) не вызывается, как я вижу в своей консоли.
class MyApp extends StatelessWidget {
final List<SingleChildWidget> providers = [
Provider<DynamicLinkService>(
create: (context) {
print("Dynamic Link Service Provider gets built");
return DynamicLinkService();
},
),
Provider<int>(create: (context) {
print("Int Provider gets built");
return 1;
}),
];
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: providers,
builder: (ctx, _) {
return MaterialApp(
theme: themeData(context),
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
onGenerateRoute: (settings) {
return getPageRoute(settings);
},
home: StartUpView(),
navigatorKey: locator<NavigationService>().navigatorKey,
);
},
);
}
}
Вывод на консоль:
Dynamic Link Service Provider gets built
Комментарии:
1. Попробуйте определить их непосредственно в функции сборки. В вашем примере они создаются при
MyApp
создании, а не приbuild
вызове функции.2. @StefanGaller Спасибо за ваш ответ, я только что попробовал. К сожалению, это не работает
3. По умолчанию экземпляры поставщиков создаются лениво. Если вы хотите, чтобы они были созданы сразу же, попробуйте использовать
lazy: false