提问人:Best Friends Inc 提问时间:10/5/2020 最后编辑:AryanBest Friends Inc 更新时间:10/6/2020 访问量:1659
Flutter:如何将 PageRoute Animation 与 Navigator.of(context).pushNamed 结合
Flutter: How to combine PageRoute Animation with Navigator.of(context).pushNamed
问:
我想在我的 flutter 项目上使用动画页面路由。现在我的所有路由都是命名路由,我不想更改它们。有什么方法可以将页面路由动画与命名路由一起使用?比如:如果我要从使用,我不想看到默认过渡,可能是我想使用缩放动画或淡入淡出动画。有什么办法可以做到这一点吗?PageOne()
PageTwo()
Navigator.of(context).pushNamed(PageTwo.routename)
onTap: () {
Navigator.of(context).pushNamed(
ProductsSearch.routeName,
arguments: ScreenArguments(null, null, null, null, null, null, true, false),
);
},
答:
1赞
Subrata Das
10/5/2020
#1
作为您的问题,我已经解决了这个演示答案,请尝试一次。
import 'package:flutter/material.dart';
void main() {
runApp(
MaterialApp(
home: HomePage(),
onGenerateRoute: (RouteSettings settings) {
final SecondHome args = settings.arguments;
switch (settings.name) {
case '/':
return SlideRightRoute(widget:HomePage());
break;
case '/second':
return
SlideRightRoute(widget:SecondHome(args.data1,args.data2,args.boolvalue));
break;
}
},
),
);
}
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Home'),
),
body: new Center(
child: RaisedButton(
onPressed: () {
Navigator.of(context).pushNamed(
'/second',
arguments:SecondHome("data1","data2",true),
);
},
child: Text('Second Home'),
),
),
);
}
}
class SecondHome extends StatelessWidget {
String data1;
String data2;
bool boolvalue;
SecondHome(this.data1,this.data2,this.boolvalue);
@override
Widget build(BuildContext context) {
print("Secoendhomedata${data1}");
return Scaffold(
appBar: AppBar(
title: Text('Second Home'),
),
body: new Center(
child: RaisedButton(
onPressed: () {
Navigator.pop(context);
},
child: Text('Go Back'),
),
),
);
}
}
class SlideRightRoute extends PageRouteBuilder {
final Widget widget;
SlideRightRoute({this.widget})
: super(
pageBuilder: (BuildContext context, Animation<double> animation,
Animation<double> secondaryAnimation) {
return widget;
},
transitionsBuilder: (BuildContext context,
Animation<double> animation,
Animation<double> secondaryAnimation,
Widget child) {
return new SlideTransition(
position: new Tween<Offset>(
begin: const Offset(1.0, 0.0),
end: Offset.zero,
).animate(animation),
child: child,
);
},
);
}
评论
0赞
Best Friends Inc
10/5/2020
我想知道如何在不影响我的论点的情况下与 pushNamed 一起使用
0赞
Subrata Das
10/5/2020
您需要在 MaterialApp 小组件中使用 onGenerateRoute。
0赞
Best Friends Inc
10/6/2020
如果我使用 onGenerateRoute,则不能使用参数。我必须作为参数传递。我有什么办法吗?
0赞
Subrata Das
10/6/2020
我已经编辑了我的答案,我希望您的问题得到解决,如果它有效,请勾选答案。
评论
pageTransitionsTheme
NeumorphicThemeData
pageTransitionsTheme