使用Flutter Scaffold.Drawer时 - 是否可以让抽屉中的链接更改页面上的内容(Scaffold.body)?与导航抽屉中的链接类似,在Android中更改片段.
azi*_*iza 14
您可以通过state与以下内容进行互动来更改您感兴趣的内容Drawer:
以下是此示例的相关代码:
class TestPage extends StatefulWidget {
@override
_TestPageState createState() => new _TestPageState();
}
class _TestPageState extends State<TestPage> {
String text = "Initial Text";
@override
Widget build(BuildContext context) {
return new Scaffold(
drawer: new Drawer(
child: new ListView(
children: <Widget>[
new Container(child: new DrawerHeader(child: new Container())),
new Container (
child: new Column(
children: <Widget>[
new ListTile(leading: new Icon(Icons.info),
onTap:(){
setState((){
text = "info pressed";
});
}
),
new ListTile(leading: new Icon(Icons.save),
onTap:(){
setState((){
text = "save pressed";
});
}
),
new ListTile(leading: new Icon(Icons.settings),
onTap:(){
setState((){
text = "settings pressed";
});
}
),
]
),
)
],
),
),
appBar: new AppBar(title: new Text("Test Page"),),
body: new Center(child: new Text((text)),
));
}
}
Run Code Online (Sandbox Code Playgroud)
这是 Aziza 的一个非常好的解决方案!谢谢你。有用!我只想补充一点,通过将其替换为小部件状态,它也可以适用于整个身体:
...
class _TestPageState extends State<TestPage> {
String text = "Initial Text";
Widget widgetForBody = SomeWidgetFromClass();
...
...
children: <Widget>[
new Container(child: new DrawerHeader(child: new Container())),
new Container (
child: new Column(
children: <Widget>[
new ListTile(leading: new Icon(Icons.info),
onTap:(){
setState((){
widgetForBody = AnotherWidgetFromClass();
});
}
),
new ListTile(leading: new Icon(Icons.save),
onTap:(){
setState((){
widgetForBody = YetAnotherWidgetFromClass();
});
}
),
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7846 次 |
| 最近记录: |