簡體   English   中英

flutter 中未調用處理方法

[英]Dispose method not called in flutter

我面臨一個問題,在 flutter 中更改屏幕后未調用 dispose 方法。首先是源代碼。

class Game extends StatefulWidget {

  Game({Key key, this.title}) : super(key: key);

  final String title;
  @override
  _GameState createState() => new _GameState();
}

class _GameState extends State<Game>  with SingleTickerProviderStateMixin {

  final CrosswordController myController = CrosswordController();

  var chewieController = null;
  var videoPlayerController = null;


  Widget makeVideoStreaming(){
    videoPlayerController = VideoPlayerController.network("https://somelink.com");
    chewieController = ChewieController(//paramtere here
    );
  }

  @override
  void initState() {
    super.initState();
   this.makeVideoStreaming();
    _controller =  AnimationController(vsync: this, duration: Duration(minutes: gameTime));
  }

  @override
  void dispose(){
    print('DISPOSE CALLED- GAME---');
    videoPlayerController.dispose();
    chewieController.dispose();
    _controller.dispose();
    super.dispose();
  }
  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: _onBackPressed,
      child:  Scaffold(
        key: _scaffoldKey,
        drawer: NavigationDrawer(),
        resizeToAvoidBottomPadding: false,

        body://body here
      ),
    );
  }
}

NavigationDrawer()我更改為類似這樣的一些不同路線。

 onTap: () {
   Navigator.pop(context); Navigator.pushNamed(context, '/edit_profile');
 },

以上只是點擊抽屜列表項中的一項后調用的代碼的一部分。 為什么在GameState中沒有調用dispose方法?

從堆棧中刪除屏幕時調用的 Dispose 方法意味着當您使用navigator.pop()pushReplacement 時

這是一個已知的錯誤: https://github.com/flutter/flutter/issues/40940
即使您從官方文檔中復制示例,它也不會被調用: https://flutter.dev/docs/cookbook/networking/web-sockets#complete-example
我已經啟動了flutter-dev的一個線程,以確定是否應該使用其他東西: https://groups.google.com/g/flutter-dev/c/-0QZFGO0p-g/m/bictyZWCCAAJ

暫無
暫無

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM