【发布时间】:2026-01-09 12:00:02
【问题描述】:
我正在尝试构建一个ListView.builder() 小部件,其中每个项目都是一个ListTile。当点击磁贴时,我想执行Navigator.of(context).pop()。但ListView.builder() 中的每个项目都有Navigator.of(context).canPop() false 的属性,所以我无法弹出或返回上一个屏幕。
class AllHabitsView extends StatelessWidget {
static const routeName = 'all_habits_view';
const AllHabitsView({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
print(Navigator.of(context).canPop()); // Evaluate to true
return MaterialApp(
home: Scaffold(
appBar: AppBar(),
body: ListView.builder(
itemBuilder: (context, index) {
print(Navigator.of(context).canPop()); // evaluate to false
return Text('data');
},
itemCount: 5,
),
),
);
}
}
【问题讨论】:
-
你可以在被其他屏幕推送时弹出。
-
@MehranUllah 对。如您所见,有两个 canPop() 方法。一个返回真另一个假。
-
MaterialApp建立一个新的Navigator,因此您的ListView看不到任何以前的屏幕。为什么这里有MaterialApp? -
@PatrickO'Hara 谢谢。那是错误。
标签: flutter dart flutter-navigation