Flutter:从另一个类状态调用函数



我的应用程序允许人们在导航栏上发布文本并在不同页面之间切换。在用户页面上,有一个按钮,当单击时,会显示一个覆盖,以便用户可以创建帖子。覆盖包括一个返回按钮,该按钮调用一个函数来关闭覆盖。我想让导航栏在底部可用,这样用户就可以退出帖子,如果他们想的话

问题是,当用户使用导航栏时,覆盖不会关闭,因为关闭覆盖功能在用户页面上,而导航栏页面无法访问它。如何让另一个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();

最新更新