Flutter 向后导航并显示snackbar
我想在显示页面1时显示SnackBar。当用户从第2页导航到第1页时 但我只在第一页到第二页之间工作 这是我的密码Flutter 向后导航并显示snackbar,flutter,dart,snackbar,Flutter,Dart,Snackbar,我想在显示页面1时显示SnackBar。当用户从第2页导航到第1页时 但我只在第一页到第二页之间工作 这是我的密码 class HomePage extends StatefulWidget { @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { @override Widget build(Bu
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text(
' Homepage',
),
),
body: Center(
child: RaisedButton(
***onPressed: () {
Navigator.push(context,
BouncyPageRoute3(widget: Page2()));
}***
child: Text('go to Page2'),
),
)));
}
}
class BouncyPageRoute3 extends PageRouteBuilder {
final Widget widget;
BouncyPageRoute3({this.widget})
: super(
transitionDuration: Duration(milliseconds: 700),
transitionsBuilder: (BuildContext context,
Animation<double> animation,
Animation<double> secondaryAnimation,
Widget child) {
animation =
CurvedAnimation(parent: animation, curve: Curves.ease);
return ScaleTransition(
scale: animation,
alignment: Alignment.center,
child: child,
);
},
pageBuilder: (BuildContext context, Animation<double> animation,
Animation<double> secondaryAnimation) {
return widget;
});
}
类主页扩展StatefulWidget{
@凌驾
_HomePageState createState()=>\u HomePageState();
}
类_HomePageState扩展状态{
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
appBar:appBar(
标题:正文(
"网页",,
),
),
正文:中(
孩子:升起按钮(
***已按下:(){
Navigator.push(上下文,
BouncyPageRoute3(小部件:Page2());
}***
子项:文本(“转到第2页”),
),
)));
}
}
类BouncyPageRoute3扩展了PageRouteBuilder{
最终小部件;
BouncyPageRoute3({this.widget})
:超级(
转换持续时间:持续时间(毫秒:700),
transitionsBuilder:(BuildContext上下文,
动画,,
动画二级动画,
小部件(子部件){
动画=
曲线动画(父对象:动画,曲线:Curves.ease);
返回刻度转换(
比例:动画,
对齐:对齐.center,
孩子:孩子,
);
},
pageBuilder:(构建上下文、动画、,
动画(二级动画){
返回控件;
});
}
当您使用第2页上的Raised按钮返回主页时,我希望主页上会显示一个SnackBar
我还使用了BouncyPageRoute3,它是动画的一部分。试试这个:
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
' Homepage',
),
),
body: Center(
child: RaisedButton(
onPressed: () async {
await Navigator.of(context).push(
PageRouteBuilder(
pageBuilder: (c, a1, a2) => Page2(),
transitionsBuilder: (c, animation, a2, child) {
var begin = Offset(0.0, 1.0);
var end = Offset.zero;
var curve = Curves.ease;
var tween = Tween(begin: begin, end: end)
.chain(CurveTween(curve: curve));
return SlideTransition(
position: animation.drive(tween),
child: child,
);
},
transitionDuration: Duration(milliseconds: 2000),
),
);
showSnackBar();
},
child: Text('go to Page2'),
),
));
}
showSnackBar() {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("page 1")));
}
}
当你从第1页转到第2页时,你能分享代码吗?我在问题中添加了我的代码@BabCit不起作用,很遗憾,它与问题中的上述代码有什么关系?使用Navigator.pop,仅在MyApp classI上保留MaterialApp我编辑了它。现在试试这种方法我在按下按钮时将其添加到我的动画代码中:(){Navigator.push(上下文,BouncyPageRoute3(widget:Page2());}现在该怎么做?你想要什么样的动画?
RaisedButton(
child: Text('go to homepage '),
onPressed: () {
Navigator.of(context).pop();
},
),