我试图从一个页面转移到另一个页面,为此,我使用arrow_back icons
返回到上一页,我使用Navigator.pop(context)
,但给出错误PersistedOffset: is in an unexpected state.
Flutter Channel:Dev
和设备:Web Chrome
.谢谢!
class IndividualDetails extends StatefulWidget {
const IndividualDetails({super.key, required this.chatModel});
final ChatModel chatModel;
@override
State<IndividualDetails> createState() => _IndividualDetailsState();
}
class _IndividualDetailsState extends State<IndividualDetails> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leadingWidth: 70,
leading: InkWell(
onTap: () {
Navigator.of(context).pop();
},
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: const [
Icon(
Icons.arrow_back,
size: 24,
),
CircleAvatar(
radius: 20,
backgroundColor: Colors.blueGrey,
child: SvgPicture.asset(
widget.chatModel.isGroup ? 'assets/groups.svg' : 'assets/person.svg',
color: Colors.white,
height: 32,
width: 32,
),
),
],
),
),
),
);
}
}
这是卡,当我点击此卡,它会nevate到IndividualDetails()
页。我想返回此卡,当我点击后退按钮。
class CustomCard extends StatelessWidget {
const CustomCard({super.key, required this.chatModel});
final ChatModel chatModel;
@override
Widget build(BuildContext context) {
return InkWell(
onTap: () => Navigator.of(context).push(MaterialPageRoute(
builder: (context) => IndividualDetails(
chatModel: chatModel,
))),
child: Column(
children: [
ListTile(
leading: CircleAvatar(
radius: 30,
backgroundColor: Colors.blueGrey,
child: SvgPicture.asset(
chatModel.isGroup ? 'assets/groups.svg' : 'assets/person.svg',
color: Colors.white,
height: 32,
width: 32,
),
),
trailing: Text(chatModel.time),
title: Text(
chatModel.name,
style: const TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
subtitle: Row(
children: [
const Icon(
Icons.done_all,
color: Colors.blue,
size: 20,
),
const SizedBox(
width: 2.0,
),
Text(chatModel.currentMessage),
],
),
),
const Padding(
padding: EdgeInsets.only(left: 80.0, right: 20.0),
child: Divider(
thickness: 1.5,
),
),
],
),
);
}
}
2条答案
按热度按时间ogsagwnx1#
我在使用
Navigator.pop(context)
时遇到了同样的问题。这只发生在设备上:网页浏览器。Android或iPhone设备中不会发生此行为。
我对此的临时解决方案是:
Navigator.pushNamed(context, parent.routeName)
这将强制导航到指定的视图。或者Navigator.pushNamedAndRemoveUntil(context, parent.routeName, (r) => false)
和以前一样,但将清理导航堆栈。根据情况选择一个或另一个。祝你好运。
好了,现在有一个更好的解决方案:
我在Android、iPhone和Chrome Web中测试了这一点,每次都能正常工作。
1.-使用本机flutter List集合管理Stacks的自定义类:
ViewManager
类现在将以一种简单的方式处理导航器,并在每个平台中正确地处理:1.将此变量添加为静态变量或提供程序:
1.现在,只需使用此命令在所有视图之间导航,没有任何问题:
再次祝你好运。
j9per5c42#
我在网上使用flutter_svg包时遇到了这个错误。具体来说,当我试图弹回我的导航器中的一条在AppBar中显示SVG的路线时,这个错误被抛出。相当模糊。
我的解决方案是只使用图像小部件,我在网上使用flutter_svg时遇到了一些问题,所以如果可以的话尽量避免使用。