我的应用程序允许人们在导航栏上发布文本并在不同页面之间切换。在用户页面上,有一个按钮,当单击时,会显示一个覆盖,以便用户可以创建帖子。覆盖包括一个返回按钮,该按钮调用一个函数来关闭覆盖。我想让导航栏在底部可用,这样用户就可以退出帖子,如果他们想的话
问题是,当用户使用导航栏时,覆盖不会关闭,因为关闭覆盖功能在用户页面上,而导航栏页面无法访问它。如何让另一个dart文件上的另一个类访问方法或函数?如果你能回答,你能用我的代码而不是另一个例子来帮助我更好地理解吗?谢谢
用户页面文件#1
class UserPage extends StatefulWidget {
@override
_UserPageState createState() => _UserPageState();
}
class _UserPageState extends State<UserPage> {
OverlayEntry? entry;
@override
Widget build(BuildContext context) {
return Scaffold(
ElevatedButton(
child: const Text('New Post'),
onPressed: showOverlay,
),
),
}
void showOverlay() {
(...)
}
void closeOverlay() {
entry?.remove();
entry = null;
}
}
导航栏文件#2(需要"OnTap"帮助(
class Nav extends StatefulWidget {
const Nav({Key? key}) : super(key: key);
@override
_NavState createState() => _NavState();
}
class _NavState extends State<Nav> {
int currentTab = 1; // makes the home page the default when loading up the app
@override
void initState() {
super.initState();
}
List<Widget> tabs = <Widget>[
const Other(),
const Home(),
const UserPage(),
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: tabs.elementAt(currentTab),
),
// BOTTOM NAVIGATION BAR
bottomNavigationBar: BottomNavigationBar(
currentIndex: currentTab,
onTap: (value) {
setState(() => currentTab = value);
const _UserPageState().closeOverlay(); //HERE IS WHERE I NEED HELP WITH THE CODE
},
items: const [
BottomNavigationBarItem(
label: 'Other',
),
BottomNavigationBarItem(
label: 'Home',
),
BottomNavigationBarItem(
label: 'User Page',
),
],
),
);
}
}
您可以尝试通过从_UserPageState
中删除-
来将其公开,然后将其称为UserPageState().closeOverlay();