dart - Flutter中如何实现动态widget路由?
问题描述
我正在将路由添加到我的 Flutter 应用程序中,并且我想在我的所有路由中重复使用一些常见的小部件。
例如,AppBar
andDrawer
实例应该在顶层视图上定义,并且路由视图应该在一个包含的 Widget 中(图像中的黄色部分)
是否支持?目前我发现的所有“Flutter Routing”参考都演示了整个视图的替换 => 每条路由的公共小部件的不同实例。
void redirect(BuildContext context, name) {
Navigator.of(context).pushNamed(name);
}
getCommonDrawer(context) {
return Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: <Widget>[
DrawerHeader(
child: Text('header'),
decoration: BoxDecoration(
color: Colors.greenAccent,
),
),
ListTile(
title: Text('foo'),
onTap: () {
Navigator.pop(context);
},
),
ListTile(
title: Text('bar'),
onTap: () {
Navigator.pop(context);
},
),
],
),
);
}
class Screen1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Screen 1"),
),
drawer: getCommonDrawer(context),
body: new Center(
child: new Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
new RaisedButton(
onPressed: () {
redirect(context, "/screen2");
},
child: new Text("screen2"),
)
],
),
),
);
}
}
class Screen2 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Screen 2"),
),
drawer: getCommonDrawer(context),
body: new Center(
child: new Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
new RaisedButton(
onPressed: () {
redirect(context, "/screen1");
},
child: new Text("screen1"),
)
],
),
),
);
}
}
void main() { // 1
runApp( // 2
new MaterialApp( //3
home: new Screen1(), //4
routes: <String, WidgetBuilder> { //5
'/screen1': (BuildContext context) => new Screen1(), //6
'/screen2' : (BuildContext context) => new Screen2() //7
},
)
);
}
解决方案
推荐阅读
- javascript - 这个 Javascript 片段“Promise.resolve().then(....)”有名称吗?
- maven - maven依赖冲突
- haskell - 在haskell的表中搜索项目
- ios - 在我将它用作 Xcode 中的应用程序图标之前,如何检查图标是否具有透明度
- python - 给定两者时将数字转换为十进制
- powerbi - DAX 中的嵌套排名
- asp.net - 找不到方法:无效 Microsoft.PowerBI.Api.V2.PowerBIClient..ctor - Power BI Embedded
- php - 我想通过 PHP/HTML 控制 python 脚本
- swift - 创建一个函数来计算句子中的元音、辅音和标点符号
- zabbix - Zabbix 外部检查从 bash 运行,但不是从管理 Web 控制台中的地图运行