我有一个带抽屉导航的 flutter 应用程序。打开时,抽屉与一个小部件重叠(我们称之为 Screen_1)。
我想在用户关闭抽屉时强制重建 Screen_1。最好的方法是什么?谢谢。
我有一些可能对您有帮助的建议,您可以根据您的需要进行选择,您可以查看这些:
ValueNotifier:https://api.flutter.dev/flutter/foundation/ValueNotifier-class.html
如果您按下按钮将其关闭,您可以使用: Navigator.pushReplacement
或者最后 回调函数
示例:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatelessWidget {
void _rebuildScreen1(BuildContext context) {
Navigator.pop(context); // Close the drawer
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => Screen_1(rebuildCallback: _rebuildScreen1),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Drawer Example'),
),
drawer: Drawer(
child: ListTile(
title: Text('Close Drawer'),
onTap: () => _rebuildScreen1(context), // Call the rebuild callback
),
),
body: Screen_1(rebuildCallback: _rebuildScreen1),
);
}
}
class Screen_1 extends StatefulWidget {
final VoidCallback rebuildCallback;
Screen_1({required this.rebuildCallback});
@override
_Screen_1State createState() => _Screen_1State();
}
class _Screen_1State extends State<Screen_1> {
@override
Widget build(BuildContext context) {
return Center(
child: TextButton(
onPressed: () => widget.rebuildCallback(), // Use the rebuild callback
child: Text('Rebuild Screen 1'),
),
);
}
}