dart - 5.0.0 迁移后使用提供程序的多提供程序失败
问题描述
我尝试迁移到provider: ^5.0.0
并停止工作,采样之前工作的内容。
@override
Widget build(BuildContext context) {
WidgetsFlutterBinding.ensureInitialized();
return MultiProvider(
providers: [
ChangeNotifierProvider<ConfigurationProvider>(create: (context) => ConfigurationProvider(preferences: widget.preloadedFs)),
ChangeNotifierProvider<ManagerProvider>(create: (context) => ManagerProvider()),
],
child: Builder(builder: (context) {
ConfigurationProvider config = Provider.of<ConfigurationProvider>(context);
ThemeData customTheme;
ThemeData darkTheme;
darkTheme = config.blackThemeEnabled ? AppTheme.black(config.accentColor) : AppTheme.dark(config.accentColor);
customTheme = config.darkThemeEnabled ? darkTheme : AppTheme.white(config.accentColor);
List<Locale> supportedLocales = [];
supportedLanguages.forEach((element) => supportedLocales.add(Locale(element.languageCode, '')));
return MaterialApp(
locale: _locale,
supportedLocales: supportedLocales,
localizationsDelegates: [
FallbackLocalizationDelegate(),
AppLocalizationsDelegate(),
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
localeResolutionCallback: (locale, supportedLocales) {
for (var supportedLocale in supportedLocales) {
if (supportedLocale?.languageCode == locale?.languageCode && supportedLocale?.countryCode == locale?.countryCode) {
return supportedLocale;
}
}
return supportedLocales?.first;
},
builder: (context, child) {
return ScrollConfiguration(
behavior: CustomScrollBehavior(),
child: child,
);
},
);
}),
);
}
错误日志
======== Exception caught by widgets library =======================================================
The following ArgumentError was thrown building Builder(dirty, dependencies: [_InheritedProviderScope<ConfigurationProvider>]):
Invalid argument(s) (value): Must not be null
The relevant error-causing widget was:
Builder file:///home/sony/flutter-sdk/flutter-app/demo-flutter/lib/main.dart:109:14
When the exception was thrown, this was the stack:
#0 ArgumentError.checkNotNull (dart:core/errors.dart:185:27)
#1 SharedPreferences._setValue (package:shared_preferences/shared_preferences.dart:146:19)
#2 SharedPreferences.setString (package:shared_preferences/shared_preferences.dart:132:7)
#3 LegacyPreferences.saveAudioDownloadPath (package:demo/internal/legacyPreferences.dart:127:11)
#4 ConfigurationProvider.audioDownloadPath= (package:demo/provider/configurationProvider.dart:165:17)
...
====================================================================================================
======== Exception caught by widgets library =======================================================
The following StateError was thrown building Builder(dirty, dependencies: [_InheritedProviderScope<ConfigurationProvider>]):
Bad state: Tried to read a provider that threw during the creation of its value.
The exception occurred during the creation of type ConfigurationProvider.
The relevant error-causing widget was:
Builder file:///home/sony/flutter-sdk/flutter-app/demo-flutter/lib/main.dart:109:14
When the exception was thrown, this was the stack:
#0 _CreateInheritedProviderState.value (package:provider/src/inherited_provider.dart:661:7)
#1 _InheritedProviderScopeElement.value (package:provider/src/inherited_provider.dart:544:33)
#2 Provider.of (package:provider/src/provider.dart:289:29)
#3 _MainState.build.<anonymous closure> (package:demo/main.dart:110:49)
#4 Builder.build (package:flutter/src/widgets/basic.dart:7798:48)
...
====================================================================================================
解决方案
推荐阅读
- ios - 更新 Xcode Swift
- angular - Angular 8 中有哪些新功能?
- c++11 - 在构造函数声明中使用类局部类型定义
- javascript - 为什么 EPPLUS excel 下载在 MVC 中不起作用
- python - 用 Python 计算元组二叉树中整数的总和
- android - Firebase-MLkit 条形码扫描仪不产生任何结果
- python - 使用 pandas 将 ndarray 值转换为整个数据帧的数值
- php - 在一台机器上将 XAMPP 连接到 microsoft sql server management studio 2012
- opencv - gomobile bind -target=ios golang.org/x/mobile/example/bind/... libc++ 错误
- 3d - 从立体图片计算深度值高于预期