AppBar 内的后退按钮在抖动中显示黑屏
back button inside AppBar showing black screen in flutter
我有包含 A 和 B 屏幕的底部选项卡导航器,在 B 屏幕内我有导航到 C 页面的小部件,在 C 页面内我想添加后退箭头以返回上一个屏幕(B 屏幕),所以...
我有一个简单的小部件,代码看起来像这样
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
resizeToAvoidBottomPadding: false,
appBar: AppBar(
leading: IconButton(
icon: Icon(Icons.arrow_back),
onPressed: () => Navigator.of(context).pop(),
),
title: Text("XXX"),
centerTitle: true,
),
body: detail()));
}
问题是每当我单击后退箭头时..它会变成黑屏...我不知道问题出在哪里...那么有没有办法回到我之前的屏幕?
这就是我从 B 屏幕导航到 C 页面的方式
InkWell(
onTap: () {Navigator.of(context).pushReplacement(MaterialPageRoute(
builder: (context) => new NextScreen(check: values)));
},
child: Text(
"Next...",
style: TextStyle(
fontSize: 13.0,
),
),
)
您看到空白屏幕的原因是您使用 pushReplacement
进行导航。 pushReplacement
是做什么的,它将导航到下一个屏幕而不会将自己堆叠到路由,这意味着它会让应用程序忘记最后一个屏幕是您的屏幕 B。请尝试使用 Navigator.push()
。
这是一个例子:
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ScreenC()),
);
}
我有包含 A 和 B 屏幕的底部选项卡导航器,在 B 屏幕内我有导航到 C 页面的小部件,在 C 页面内我想添加后退箭头以返回上一个屏幕(B 屏幕),所以... 我有一个简单的小部件,代码看起来像这样
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
resizeToAvoidBottomPadding: false,
appBar: AppBar(
leading: IconButton(
icon: Icon(Icons.arrow_back),
onPressed: () => Navigator.of(context).pop(),
),
title: Text("XXX"),
centerTitle: true,
),
body: detail()));
}
问题是每当我单击后退箭头时..它会变成黑屏...我不知道问题出在哪里...那么有没有办法回到我之前的屏幕? 这就是我从 B 屏幕导航到 C 页面的方式
InkWell(
onTap: () {Navigator.of(context).pushReplacement(MaterialPageRoute(
builder: (context) => new NextScreen(check: values)));
},
child: Text(
"Next...",
style: TextStyle(
fontSize: 13.0,
),
),
)
您看到空白屏幕的原因是您使用 pushReplacement
进行导航。 pushReplacement
是做什么的,它将导航到下一个屏幕而不会将自己堆叠到路由,这意味着它会让应用程序忘记最后一个屏幕是您的屏幕 B。请尝试使用 Navigator.push()
。
这是一个例子:
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ScreenC()),
);
}