我一直在尝试创建一个可重复使用的按钮小部件,只需要输入3个参数,即说什么,去哪里以及如何进行(淡入淡出,滑动等),我设法获得了前两个参数很好,但是第三个给我问题。
我一直在尝试遵循IDE的建议修复问题,并在网上寻找类似的问题,但它们似乎都与String有关。
我遇到了问题参数类型 'TransitionFadePageRoute'(我的转换方法的名称) 不能分配给参数类型“功能”。
这是按钮;
class ButtonWide extends StatefulWidget {
ButtonWide({this.text, this.navigationMethod, this.navigationDestination});
final String text;
final Function navigationMethod;
final Widget navigationDestination;
@override
_ButtonWideState createState() => _ButtonWideState(navigationMethod);
}
class _ButtonWideState extends State<ButtonWide> {
final Function navigationFunction;
_ButtonWideState(this.navigationFunction);
@override
Widget build(BuildContext context) {
return ClipRRect(
borderRadius: BorderRadius.circular(17.0),
child: RaisedButton(
splashColor: Theme.of(context).accentColor,
color: Theme.of(context).primaryColor,
onPressed: () => Navigator.push(
context, navigationFunction(widget: widget.navigationDestination)),
padding: EdgeInsets.zero,
child: Container(
width: MediaQuery.of(context).size.width-125,
height: 45.0,
child: Center(
child: Text(widget.text, style: TextStyle(color: Colors.white)),
),),),);} }
我尝试摆弄决赛(将功能更改为小部件,或者甚至是动态的,暂时起作用但单击时会崩溃)以查看它是否可以修复,它说这里的navigationFunction似乎是问题所在。
Navigator.push(context, navigationFunction(widget: widget.navigationDestination)),
我尝试通过使用widget.navigationMethod(在需要时进行重构)来简化它,最后将其放置在有状态的小部件中。
这就是构建时的称呼方式
ButtonWide(
text: 'Log In',
navigationMethod: TransitionFadePageRoute(),
navigationDestination: LoginLogin(),
),
这可能可行吗?在我的脑海中这很有意义,但是我对此并不陌生。我是否应该为不同的过渡方法创建不同的按钮。