我的應用程式允許人們在導航欄上發布文本并在不同頁面之間切換。在用戶頁面上,有一個按鈕,單擊時將顯示一個疊加層,以便用戶可以創建帖子。覆寫層包括一個回傳按鈕,它呼叫一個函式來關閉覆寫層。我想在底部保留導航欄,以便用戶可以在需要時以這種方式退出帖子。
問題是,當用戶使用導航欄時,覆寫不會關閉,因為關閉覆寫功能在用戶頁面上并且導航欄頁面無法訪問它。 如何讓另一個 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',
),
],
),
);
}
}
uj5u.com熱心網友回復:
您可以嘗試通過從中_UserPageState洗掉-來公開您,然后呼叫它UserPageState().closeOverlay();
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/400740.html
標籤:扑
下一篇:放置容器而不是AppBar
