我的应用程序运行良好,我只是更新了一个文件中的代码,我收到这个错误之前,每个页面都导航完美,现在所有页面都很好地工作,而不是这个页面,我从主页导航到这个页面抛出另一个异常:"软件包:flutter/源代码/小部件/导航器. dart":Assert失败:第2216行位置12:'!_调试锁定':不是这样的,我不知道现在的问题在哪里。
import 'package:custom_chewie/custom_chewie.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
import 'package:firebase_admob/firebase_admob.dart';
class ChewieDemo extends StatefulWidget {
final String title;
ChewieDemo({this.title = 'Chewie Demo'});
@override
State<StatefulWidget> createState() {
return new _ChewieDemoState();
}
}
class _ChewieDemoState extends State<ChewieDemo> {
int counter=0;
static final MobileAdTargetingInfo targetingInfo = MobileAdTargetingInfo(
keywords: ['Games', 'Puzzles'],
);
BannerAd bannerAd;
InterstitialAd interstitialAd;
RewardedVideoAd rewardedVideoAd;
BannerAd buildBanner() {
return BannerAd(
adUnitId: BannerAd.testAdUnitId,
size: AdSize.banner,
listener: (MobileAdEvent event) {
print(event);
});
}
InterstitialAd buildInterstitial() {
return InterstitialAd(
adUnitId: InterstitialAd.testAdUnitId,
targetingInfo: targetingInfo,
listener: (MobileAdEvent event) {
if (event == MobileAdEvent.failedToLoad) {
interstitialAd..load();
} else if (event == MobileAdEvent.closed) {
interstitialAd = buildInterstitial()..load();
}
print(event);
});
}
TargetPlatform _platform;
VideoPlayerController _controller;
@override
void initState() {
super.initState();
_controller = new VideoPlayerController.network(
'https://github.com/flutter/assets-for-api-docs/blob/master/assets/videos/butterfly.mp4?raw=true',
);
FirebaseAdMob.instance.initialize(appId: FirebaseAdMob.testAppId);
bannerAd = buildBanner()..load();
interstitialAd = buildInterstitial()..load();
}
@override
void dispose(){
super.dispose();
_controller.dispose();
}
@override
Widget build(BuildContext context) {
bannerAd ..load()..show(
anchorOffset: 20.0,
anchorType: AnchorType.top,
);
Future<bool> _onBackPressed() {
if(counter<1){
interstitialAd
..load()
..show();
counter++;
}
else{bannerAd.dispose();
Navigator.pop(context, true);
}
}
return WillPopScope(
child: Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new Column(
children: <Widget>[
new Expanded(
child: new Center(
child: new Chewie(
_controller,
aspectRatio: 3 / 2,
autoPlay: true,
looping: true,
),
),
),
new Row(
children: <Widget>[
new Expanded(
child: new FlatButton(
onPressed: () {
setState(() {
_platform = TargetPlatform.android;
});
},
child: new Padding(
child: new Text("Android controls"),
padding: new EdgeInsets.symmetric(vertical: 16.0),
),
),
),
new Expanded(
child: new FlatButton(
onPressed: () {
setState(() {
_platform = TargetPlatform.iOS;
});
},
child: new Padding(
padding: new EdgeInsets.symmetric(vertical: 16.0),
child: new Text("iOS controls"),
),
),
)
],
)
],
),
),
onWillPop: _onBackPressed,
);
}
}
7条答案
按热度按时间wqlqzqxt1#
如果您在1个屏幕上打开2个对话框时遇到问题..只需将一个对话框放入此Future.delayed ...
62o28rlo2#
一定是
onPressed
或onTap
监听器打开了一个对话框。简单地添加onPressed : () { myFunction(); )
。这对我来说就像一个魅力。jdgnovmf3#
当我遇到这个无用的错误文本,这是因为屏幕根小部件没有定义/有限的大小,我在根有一个“SingleChildScrollView”,
为了解决这个问题,我简单地将它 Package 在容器中,并将高度设置为屏幕最大高度,如下所示:
zbdgwd5y4#
在重新加载模拟器之前,请尝试删除最近编辑的代码。2刷新,如果可以,请尝试改进导致错误的代码。
注意:请记住在加载前重新启动应用程序。
bfrts1fy5#
我相信在实现dispose()方法时,super.dispose();应作为最后一个命令调用。
k5hmc34c6#
尝试按如下方式声明onPressed:
onPressed: () => your_func(),
8ftvxx2r7#
我的答案可能不是这个问题的合适答案。但是,当我尝试显示两个刷新条并尝试同时导航到一个屏幕时,我遇到了同样的问题。我通过删除两个刷新条解决了这个问题,因为我的导航不需要这两个刷新条。
快乐编码!!!