Я получаю эти ошибки. Я пробовал несколько вещей в течение нескольких дней, и я полностью потерян. Пожалуйста, любые предложения будут очень признательны. Я был бы рад добавить больше кода, если это необходимо.
The following ProviderNotFoundException was thrown building Wrapper(dirty):
Error: Could not find the correct Provider<User> above this Wrapper Widget
Это мой main.dart:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamProvider(
create: (_) => AuthService().user,
initialData: AuthService().user,
child: MaterialApp(
home: Wrapper(), // <-- "The relevant error-causing widget"
debugShowCheckedModeBanner: false,
),
);
}
}
Мой класс пользователя:
class User {
final String? uid;
User({this.uid});
}
Моя оболочка:
class Wrapper extends StatelessWidget {
ThemeData lightTheme(color) {
return ThemeData(
brightness: Brightness.light,
primaryColor: color,
primaryColorDark: color,
primarySwatch: color,
accentColor: color[400], textSelectionTheme: TextSelectionThemeData(selectionHandleColor: color),
// scaffoldBackgroundColor: UIHelper.WHITE,
);
}
ThemeData darkTheme(color) {
return ThemeData(
brightness: Brightness.dark,
primaryColor: color,
primaryColorDark: color,
primarySwatch: color,
accentColor: UIHelper.WHITE, textSelectionTheme: TextSelectionThemeData(selectionHandleColor: color),
);
}
@override
Widget build(BuildContext context) {
final user = Provider.of<User>(context);
print(user);
// return Home or Authenticate widget
if (user == null) {
return Authenticate();
} else {
return ChangeNotifierProvider(
create: (_) => ThemeNotifier(),
child: Consumer<ThemeNotifier>(
builder: (context, ThemeNotifier notifier, child) {
return MaterialApp(
title: 'Dashboard',
theme: notifier.darkTheme
? darkTheme(convertToSwatch(notifier.mainColor.value))
: lightTheme(convertToSwatch(notifier.mainColor.value)),
debugShowCheckedModeBanner: false,
home: AnnotatedRegion<SystemUiOverlayStyle>(
value: SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
),
child: Splash(),
),
);
},
),
);
}
}
}
Я пытался перейти на ненулевую безопасность, и теперь я изо всех сил пытаюсь загрузить первый экран. На данный момент приложение совершенно бесполезно.