簡體   English   中英

拋出另一個異常:'package:flutter/src/widgets/navigator.dart': Failed assertion: line 2216 pos 12: ':_debugLocked': is not true

[英]Another exception was thrown: 'package:flutter/src/widgets/navigator.dart': Failed assertion: line 2216 pos 12: '!_debugLocked': is not true

我的應用程序運行良好我只是更新了一個文件中的代碼並且在該錯誤之前我收到了這個錯誤每個頁面都完美導航現在所有頁面都可以正常工作而不是這個頁面我正在從主頁導航到這個頁面另一個拋出異常:'package:flutter/src/widgets/navigator.dart':斷言失敗:第 2216 行 pos 12:':_debugLocked'。 不是真的。 我不知道現在問題出在哪里。

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,
    );


  }
}

如果您在 1 個屏幕上打開 2 個對話框時遇到問題。只需在此 Future.delayed 中放置一個對話框...

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

打開對話框的按鈕的onPressedonTap偵聽器一定會導致此問題。 只需添加onPressed: () { myFunction(); ) onPressed: () { myFunction(); ) 。這對我來說就像是一種魅力。

當我遇到這個無用的錯誤文本時,這是因為屏幕根小部件沒有定義/有限大小,我在根有一個“SingleChildScrollView”,

為了解決這個問題,我只是將它包裝在 Container 中並將高度設置為屏幕最大高度,如下所示:

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

我相信在實現 dispose() 方法時, super.dispose(); 應該作為最后一個命令調用。

嘗試如下聲明 onPressed:

onPressed: () => your_func(),

在重新加載模擬器之前嘗試刪除您最近編輯的一段代碼。 刷新,如果它有效,然后嘗試改進導致錯誤的代碼。

注意:請記住在加載之前重新啟動應用程序。

我的回答可能不是這個問題的合適答案。 但是當我嘗試顯示兩個齊平條並嘗試同時導航到屏幕時,我遇到了同樣的問題。 我通過移除兩個齊平條解決了這個問題,因為我的導航不需要它們。

快樂編碼!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 未處理的異常:&#39;package:flutter/src/widgets/navigator.dart&#39;:斷言失敗:第 3499 行 pos 12:&#39;!_debugLocked&#39;:不正確。”FLUTTER 引發了另一個異常:'package:flutter/src/widgets/navigator.dart':斷言失敗:第 3803 行 pos 12:'_history.isNotEmpty':不正確 'package:flutter/src/widgets/navigator.dart':斷言失敗:第 5338 行 pos 12:':_debugLocked'。 不是真的。 這是我在下面給出的代碼 錯誤:_AssertionError('package:flutter/src/widgets/navigator.dart':斷言失敗:第 4893 行 pos 12:':_debugLocked'。不是真的。) &#39;package:flutter/src/widgets/navigator.dart&#39;:斷言失敗:第 5140 行 pos 12:&#39;_history.isNotEmpty&#39;:不正確 Flutter - _AssertionError('package:flutter/src/widgets/framework.dart':斷言失敗:第 4937 行 pos 12:'child == _child':不正確。) 小部件庫“package:flutter/src/widgets/sliver.dart”捕獲的異常:斷言失敗:第 543 行 pos 15:“children != null”:不正確 'package:flutter/src/widgets/will_pop_scope.dart':斷言失敗:第 61 行 pos 12:'_route == ModalRoute.of(context)':不正確 錯誤:'package:flutter/src/widgets/media_query.dart':斷言失敗:第 715 行 pos 12:'context:= null':不正確 'package:flutter/src/widgets/will_pop_scope.dart':斷言失敗:第 135 行 pos 12:'_route == ModalRoute.of(context)':不正確
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM