【问题标题】:How to make screen navigate to other screen start from left to right如何使屏幕导航到其他屏幕从左到右开始
【发布时间】:2020-04-09 07:41:24
【问题描述】:

我正在研究颤振网络。

我有两个屏幕,当我导航到第二个屏幕时,默认动画从底部开始,然后覆盖第一个屏幕。

当我单击导航按钮时,我希望它从左向右滑动。

我已经在移动设备上看到了屏幕滑块,但这不是我想要的。

正常。我看到有人这样做了,但我找不到它

谢谢

【问题讨论】:

    标签: flutter flutter-layout


    【解决方案1】:

    您可以在下面复制粘贴运行完整代码
    您可以使用包https://pub.dev/packages/page_transitionPageTransitionType.leftToRight
    代码sn-p

    RaisedButton(
                  child: Text('Left To Right Slide Second Page'),
                  onPressed: () {
                    Navigator.push(
                      context,
                      PageTransition(
                        type: PageTransitionType.leftToRight,
                        child: SecondPage(),
                      ),
                    );
                  },
                ),
    

    工作演示

    完整代码

    import 'package:flutter/material.dart';
    import 'package:page_transition/page_transition.dart';
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      // This widget is the root of your application.
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          debugShowCheckedModeBanner: false,
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: MyHomePage(),
          onGenerateRoute: (settings) {
            switch (settings.name) {
              case '/second':
                return PageTransition(
                  child: SecondPage(),
                  type: PageTransitionType.scale,
                  settings: settings,
                );
                break;
              default:
                return null;
            }
          },
        );
      }
    }
    
    class MyHomePage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          backgroundColor: Colors.blue,
          appBar: AppBar(
            title: Text('Page Transition'),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment: CrossAxisAlignment.center,
              children: <Widget>[
                RaisedButton(
                  child: Text('Fade Second Page'),
                  onPressed: () {
                    Navigator.push(
                      context,
                      PageTransition(
                        type: PageTransitionType.fade,
                        child: SecondPage(),
                      ),
                    );
                  },
                ),
                RaisedButton(
                  child: Text('Left To Right Slide Second Page'),
                  onPressed: () {
                    Navigator.push(
                      context,
                      PageTransition(
                        type: PageTransitionType.leftToRight,
                        child: SecondPage(),
                      ),
                    );
                  },
                ),
                RaisedButton(
                  child: Text('Size Slide Second Page'),
                  onPressed: () {
                    Navigator.push(
                        context,
                        PageTransition(
                            alignment: Alignment.bottomCenter,
                            curve: Curves.bounceOut,
                            type: PageTransitionType.size,
                            child: SecondPage()));
                  },
                ),
                RaisedButton(
                  child: Text('Rotate Slide Second Page'),
                  onPressed: () {
                    Navigator.push(
                        context,
                        PageTransition(
                            curve: Curves.bounceOut,
                            type: PageTransitionType.rotate,
                            alignment: Alignment.topCenter,
                            child: SecondPage()));
                  },
                ),
                RaisedButton(
                  child: Text('Scale Slide Second Page'),
                  onPressed: () {
                    Navigator.push(
                        context,
                        PageTransition(
                            curve: Curves.linear,
                            type: PageTransitionType.scale,
                            alignment: Alignment.topCenter,
                            child: SecondPage()));
                  },
                ),
                RaisedButton(
                  child: Text('Up to Down Second Page'),
                  onPressed: () {
                    Navigator.push(
                        context,
                        PageTransition(
                            curve: Curves.linear,
                            type: PageTransitionType.upToDown,
                            child: SecondPage()));
                  },
                ),
                RaisedButton(
                  child: Text('Down to Up Second Page'),
                  onPressed: () {
                    Navigator.pushNamed(context, "/second",
                        arguments: "with Arguments");
                  },
                ),
              ],
            ),
          ),
        );
      }
    }
    
    class SecondPage extends StatelessWidget {
      final String title;
    
      const SecondPage({Key key, this.title}) : super(key: key);
      @override
      Widget build(BuildContext context) {
        final args = ModalRoute.of(context).settings.arguments;
        return Scaffold(
          appBar: AppBar(
            title: Text(args ?? "Page Transition Plugin"),
          ),
          body: Center(
            child: Text('Second Page'),
          ),
        );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-21
      • 2020-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多