Navigator.pop(上下文,"return data" ) 在列表项目生成器项目单击显示空白



在从列表中选择项目并使用所选项目数据弹回到上一个屏幕时,我遇到了黑屏问题。这是代码库:

从父屏幕导航

final result = await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const AddRoomPage()),
);

这是流行代码

ListView.builder(
primary: false,
shrinkWrap: true,
padding: const EdgeInsets.all(20.0),
itemCount: roomNames.length,
itemBuilder: (BuildContext context, index) {
return GestureDetector(
onTap: () {
Navigator.pop(context, roomNames[index]);
},
child: RoomTypeItem(
roomName: roomNames[index],
));
})

我该如何摆脱黑屏?我用同样的代码在点击文本时弹出,它不会出现黑屏,但点击列表视图项目会出现问题。

这是什么代码

此代码用于弹出页面(第1页(,并对每个弹出方法(第2页(运行initState调用。

对于弹出时要重新加载的页面:(票证列表页面(

final bool shouldRefresh = 
await  Navigator.push(context, 
MaterialPageRoute(builder: (context) => 
CreateTicket(isCreate: true,)));

if (shouldRefresh) {
ticketList().then((value) {
_ticketPanel.addAll(value);
});
}

对于我们要弹出的页面:(票证创建页面(

Navigator.of(context).pop(true);

这将在每次导航调用中重新加载数据。不用一次又一次地翻页。

Github Gist

您需要确保pop事件只发生一次,我认为在您的代码片段中,它不止一次使用pop

您可以遵循此代码段结构。

void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key);
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: FloatingActionButton(
onPressed: () async {
final result = await Navigator.push(
context,
MaterialPageRoute(builder: (context) => const AddRoomPage()),
);
print(result);
},
),
);
}
}
class AddRoomPage extends StatefulWidget {
const AddRoomPage({Key? key}) : super(key: key);
@override
State<AddRoomPage> createState() => _AddRoomPageState();
}
class _AddRoomPageState extends State<AddRoomPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView.builder(
itemBuilder: (context, index) {
return GestureDetector(
onTap: () {
Navigator.pop(context, "item $index");
},
child: Text("item $index"),
);
},
),
);
}
}

最新更新