flutter - Flutter - 动态传递导航小部件名称
问题描述
我创建了一个按钮小部件以避免重复代码,因为屏幕上有多个按钮。单击每个按钮应将其带到不同的屏幕。
class ButtonWidget extends StatelessWidget {
final buttonText;
final destination;
ButtonWidget({this.buttonText, this.destination});
@override
Widget build(BuildContext context) {
return InkWell(
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (context) {
switch (destination) {
case 'signUp':
return SignUp();
break;
case 'signIn':
return SignIn();
break;
case 'SignInGoogle':
return SignInGoogle();
break;
default:
return SignUp();
}
}));
},
child: Align(
alignment: Alignment.bottomCenter,
child: Container(
constraints: BoxConstraints(
minHeight: 6.5 * SizeConfig.heightMultiplier,
maxHeight: 7.9 * SizeConfig.heightMultiplier),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(
Radius.circular(4 * SizeConfig.heightMultiplier),
),
color: AppTheme.topBarBackgroundColor,
),
child: Center(child: Text(buttonText)),
)));
}
}
点击时我想导航到目标小部件。但这似乎不起作用。我以下列方式调用 ButtonWidget:
ButtonWidget(
buttonText: Strings.signUp,
destination: 'signUp',
)
解决方案
传递小部件而不是它的名称表示:
class ButtonWidget extends StatelessWidget {
final buttonText;
final Widget destination;
ButtonWidget({this.buttonText, this.destination});
@override
Widget build(BuildContext context) {
return InkWell(
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (context) => destination
));
},
child: Align(
alignment: Alignment.bottomCenter,
child: Container(
constraints: BoxConstraints(
minHeight: 6.5 * SizeConfig.heightMultiplier,
maxHeight: 7.9 * SizeConfig.heightMultiplier),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(
Radius.circular(4 * SizeConfig.heightMultiplier),
),
color: AppTheme.topBarBackgroundColor,
),
child: Center(child: Text(buttonText)),
)));
}
}
执行:
ButtonWidget(
buttonText: Strings.signUp,
destination: SignUp(),
)
推荐阅读
- python-3.x - 来自 Python / Jupyter 的 Pocket API 授权
- c++ - 红黑树算法的旋转问题
- kotlin - 如何在 KOTLIN 中检测用户是否已到达回收站视图的末尾?
- react-native - 在测试 Android 应用购买时出现此错误是否正常?
- string - 调用函数时的问题,C++
- c++ - vs代码访问被拒绝cpp
- double - 在 GPU 上,是否可以通过结合双精度和浮点运算来获得更多的触发器?
- python - 从 .htb 文件中删除前 3 列
- powerbi - 基于日期周期和返回日期的切片器的 DAX 度量
- spring-boot - Keycloak 管理员 cli 超时