如何解决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)
...
====================================================================================================
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。