问题描述
感谢 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 时要小心,在您的小部件树上。最好将它实例化在适用于您的用例的最低级别之上。 (例如,如果您只需要一个屏幕,请在该屏幕上方实例化它)