【问题标题】:cant find the correct provider找不到正确的提供者
【发布时间】:2021-01-06 15:11:03
【问题描述】:

我正在尝试使用身份验证提供程序进行身份验证。 我首先尝试使用常规的 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(),
        ),
      ),
    );
  }
}

【问题讨论】:

  • “不起作用”是什么意思?你能包括你的例外吗?

标签: flutter dart flutter-dependencies flutter-provider


【解决方案1】:

修改main()方法类似

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  SystemChrome.setPreferredOrientations(
      [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]).then((_) {
    runApp(MyApp());
  });
}

WidgetsFlutterBinding.ensureInitialized()如果需要在调用[runApp]之前初始化绑定,则需要调用该方法。

为什么它不起作用:

因为 setPreferredOrientations 与异步执行任务的本机代码交互,所以ensureInitialized() 用于确保您拥有WidgetsBinding 的实例。

更多参考: https://api.flutter.dev/flutter/widgets/WidgetsFlutterBinding/ensureInitialized.html

【讨论】:

  • 删除 SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, ]);从我的应用程序中添加上面我提到的代码,然后通过杀死它再次启动应用程序。
猜你喜欢
  • 2019-12-05
  • 2019-12-23
  • 2021-02-19
  • 2021-06-09
  • 2020-06-04
  • 2021-04-04
  • 2021-07-24
相关资源
最近更新 更多