Flutter Provider 断言失败:第 156 行

问题描述

感谢 AdMob,我正在尝试实施一些 Google 广告,我正在使用 Provider 插件。 当我使用 provider.value 时,我的代码不起作用。 我真的不明白为什么。请帮忙。

这是我的代码

    prop: ['type','alertSubject'],computed: {
         alertTitle() {
            let title = ""
            if(this.alertSubject == "requestStatusUpdate") {
                if(this.type == 'success') {
                    title = 'Status update is requested'
                }
                else if(this.type == 'waiting') {
                    title = 'Requesting status update'
                }
                else if(this.type == 'error') {
                    title = 'Status update not sent'
                }
                
            }
            return title
        },}

这就是错误

import 'package:distance_meter/ad_state.dart';
import 'package:Flutter/material.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'package:provider/provider.dart';
import 'pages/loading_screen.dart';
import 'package:Flutter/services.dart';

void main() async {

  WidgetsFlutterBinding.ensureInitialized();
  final initFuture = MobileAds.instance.initialize();
  final adState = AdState(initFuture);
  SystemChrome.setPreferredOrientations(
      [DeviceOrientation.portraitUp,DeviceOrientation.portraitDown]);

  runApp(
    Provider.value(
      value: (context,child) => MaterialApp(home: Loading())
    )
  );
}

解决方法

确保您检查使用 Provider.value() 的正确方法

该构造函数需要一个值(您希望为其小部件子树提供的 Provider 实例,之前已实例化)和一个构建器函数(您在提供程序下实际构建的内容)

你的语法应该是

final _instanceOfYourProvider = YourProvider();

Provider<YourProvider>.value(
    value: _instanceOfYourProvider,builder: (context,child) => MaterialApp(home: Loading()),);

无论如何,在实例化您的 Provider 时要小心,在您的小部件树上。最好将它实例化在适用于您的用例的最低级别之上。 (例如,如果您只需要一个屏幕,请在该屏幕上方实例化它)