在颤振中未调用 Dispose 方法

Vip*_*bey 3 flutter flutter-state

我面临一个问题,在 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
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

NavigationDrawer()我改变一些不同的路线这样的事情。

 onTap: () {
   Navigator.pop(context); Navigator.pushNamed(context, '/edit_profile');
 },
Run Code Online (Sandbox Code Playgroud)

以上只是在单击抽屉列表项中的一项后调用的代码的一部分。GameState为什么在dispose 方法中没有调用?

Vir*_*iya 7

当您从堆栈中移除屏幕时调用的 Dispose 方法意味着当您使用navigator.pop()pushReplacement 时