我正在尝试使用身份验证提供程序进行身份验证。
我首先尝试使用常规的 ChangeNotifierProvider,但它不起作用。
然后我使用 MultiProvider 并且它仍然不起作用。
我在互联网上阅读了任何内容,但没有任何工作..
有人知道如何解决吗?
我检查了所有的进口商品,一切都很好。
我有另一个应用程序,我使用了相同的技术并且一切正常..
import 'package:flutter/services.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:provider/provider.dart';
import './screens/main_screen.dart';
import './screens/auth_screen.dart';
import './providers/Auth.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
]);
return MultiProvider(
providers: [
ChangeNotifierProvider(
create: (context) => Auth(),
),
],
child: Consumer<Auth>(
builder: (ctx, auth, child) => MaterialApp(
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
Locale("he", "IR"),
],
locale: Locale("he", "IR"),
debugShowCheckedModeBanner: false,
title: 'Loyalty Punch Card For Stores',
theme: ThemeData(
primaryColor: Color.fromRGBO(4, 30, 80, 1),
accentColor: Color.fromRGBO(175, 234, 220, 1),
),
home: auth.isAuth ? MainScreen() : AuthScreen(),
),
),
);
}
}
最佳答案
修改main()
方法如
void main() async {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations(
[DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]).then((_) {
runApp(MyApp());
});
}
WidgetsFlutterBinding.ensureInitialized()
如果需要在调用 [runApp] 之前初始化绑定(bind),则需要调用此方法。为什么它不起作用:
因为 setPreferredOrientations 与异步执行任务的 native 代码交互,所以
ensureInitialized()
用于确保您拥有 WidgetsBinding
的实例.更多引用:
https://api.flutter.dev/flutter/widgets/WidgetsFlutterBinding/ensureInitialized.html
关于flutter - 找不到正确的提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63976756/