抛出了另一个异常:"软件包:flutter/源代码/小部件/导航器. dart":Assert失败:第2216行位置12:'!_调试锁定':不是真的

falq053o  于 2023-01-14  发布在  Flutter
关注(0)|答案(7)|浏览(151)

我的应用程序运行良好,我只是更新了一个文件中的代码,我收到这个错误之前,每个页面都导航完美,现在所有页面都很好地工作,而不是这个页面,我从主页导航到这个页面抛出另一个异常:"软件包: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,
    );

  }
}
wqlqzqxt

wqlqzqxt1#

如果您在1个屏幕上打开2个对话框时遇到问题..只需将一个对话框放入此Future.delayed ...

Future.delayed(Duration.zero, () {
  Navigator. ...
});
62o28rlo

62o28rlo2#

一定是onPressedonTap监听器打开了一个对话框。简单地添加onPressed : () { myFunction(); )。这对我来说就像一个魅力。

jdgnovmf

jdgnovmf3#

当我遇到这个无用的错误文本,这是因为屏幕根小部件没有定义/有限的大小,我在根有一个“SingleChildScrollView”,
为了解决这个问题,我简单地将它 Package 在容器中,并将高度设置为屏幕最大高度,如下所示:

@override
  Widget build(BuildContext context) {
    return Container(
      height: MediaQuery.of(context).size.height,
      child: SingleChildScrollView(
        child: ...
      ),
    ),
  }
zbdgwd5y

zbdgwd5y4#

在重新加载模拟器之前,请尝试删除最近编辑的代码。2刷新,如果可以,请尝试改进导致错误的代码。
注意:请记住在加载前重新启动应用程序。

bfrts1fy

bfrts1fy5#

我相信在实现dispose()方法时,super.dispose();应作为最后一个命令调用。

k5hmc34c

k5hmc34c6#

尝试按如下方式声明onPressed:

onPressed: () => your_func(),

8ftvxx2r

8ftvxx2r7#

我的答案可能不是这个问题的合适答案。但是,当我尝试显示两个刷新条并尝试同时导航到一个屏幕时,我遇到了同样的问题。我通过删除两个刷新条解决了这个问题,因为我的导航不需要这两个刷新条。
快乐编码!!!

相关问题