【发布时间】:2020-08-20 00:17:04
【问题描述】:
我面临一个问题,在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 方法没有调用?
【问题讨论】:
-
尝试只推送到edit_profile页面并检查它是否有效?
-
不,没有用
-
您的 dispose 未被调用,因为该小部件以某种方式保存在小部件树中,请尝试使用 Navigator.pushReplacement('the replacement'),
标签: flutter flutter-state