我正在try 使用一个自定义的Widget,它使用一个函数来执行Navit.pop().如果我在页面中使用GestureDetector,则从FirstPage到SecondPage的导航工作良好(已注释掉代码).但如果我使用一个单独的Widget(MyButton)以及一个应该触发Navigator.pop()的函数,那么Navigator.push()将不起作用.没有错误.感谢任何帮助.
import 'package:flutter/material.dart';
void main() => runApp(TestNavigation());
class TestNavigation extends StatelessWidget {
const TestNavigation({super.key});
@override Widget build(BuildContext context) {
return const MaterialApp(home: FirstPage());
}
}
class FirstPage extends StatefulWidget {
const FirstPage({super.key});
@override State<FirstPage> createState() => _FirstPageState();
}
class _FirstPageState extends State<FirstPage> {
@override Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SecondPage()));
},
child: const Text(
'Click to next Page',
))));
}
}
class SecondPage extends StatelessWidget {
@override Widget build(BuildContext context) {
return Scaffold(
// body: GestureDetector(
// onTap: () {
// Navigator.pop(context);
// },
// child: Container(
// child: Center(child: Text('Go back to first page')))));
body: MyButton(
onTap: () {
Navigator.pop(context);
},
text: 'Go back to first page'));
}
}
class MyButton extends StatelessWidget {
final String text;
final Function onTap;
const MyButton({required this.text, required this.onTap});
@override Widget build(BuildContext context) {
return GestureDetector(
onTap: onTap(), child: Center(child: Text(text)));
}
}
没有进行导航.但如果我使用注释掉的代码,那么它就可以工作.