gpt4 book ai didi

android-studio - 在 Flutter 中按下抽屉导航中的某些内容时,如何更新主屏幕的布局?

转载 作者:行者123 更新时间:2023-12-03 02:50:20 24 4
gpt4 key购买 nike

我想做一个抽屉导航应用程序。但是,我不想在按下某些东西时推送新屏幕,而是要更新我的初始屏幕。我不能使用 setState(){}在我的抽屉里更新我的主屏幕的状态。

请帮我解决一下这个。

最佳答案

您可以将 HomeScreen 中的函数传递到 Drawer。

在你的抽屉里:

    Class CustomDrawer{
final function updateMainScreen;
CustomDrawer(this.updateMainScreen);
}

在您的主屏幕中:
child: CustomDrawer(updateScreenFunction), //this function is where your MainScreen state gets changed

这样,您可以从其他任何地方更改您想要在 HomeScreen 中的任何内容。

更新:更完整的例子。请注意,这是非常粗略的,只有这样您才能了解它是如何工作的。

主屏幕状态:
class _HomeScreenWidgetState extends State<HomeScreenWidget> {
var containerColor = Colors.red;

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: (Text('Hello')),
),
body: Container(
child: Column(
children: <Widget>[
Container(
height: 500,
width: 300,
color: containerColor,
),
CustomDrawer(
changeHomeScreen: changeContainerColor,
)
],
),
));
}

void changeContainerColor(Color col) {
setState(() {
containerColor = col;
});
}
}

模拟抽屉小部件:
class CustomDrawer extends StatelessWidget {
final Function changeHomeScreen;
CustomDrawer({this.changeHomeScreen});
@override
Widget build(BuildContext context) {
return Container(
child: FlatButton(
child: Text("Action in Drawer"),
onPressed: () => changeHomeScreen(Colors.blue),
),
);
}
}

关于android-studio - 在 Flutter 中按下抽屉导航中的某些内容时,如何更新主屏幕的布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62287495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com