MaterialPageRoute中的设置变量的意义是什么?

时间:2018-09-05 14:38:17

标签: dart flutter

我有一个ListTile列表,每当我点击它们时,就会出现一个新页面。当前,新页面将向上滑动(出现时)和向下滑动(被删除时)。我想将过渡动画更改为“淡入淡出”。

我已经在here中阅读了解决方案,然后从链接中编辑了代码,结果如下。

class MyCustomRoute<T> extends MaterialPageRoute<T> {
    MyCustomRoute({ WidgetBuilder builder})
        : super(builder: builder);

    @override
    Widget buildTransitions(BuildContext context,
        Animation<double> animation,
        Animation<double> secondaryAnimation,
        Widget child) {

        if (settings.isInitialRoute)
            return child;

        return new FadeTransition(opacity: animation, child: child);
    }
}

与我的链接解决方案唯一的区别是,我从未向MaterialPageRoute类提供“ settings”变量。

这是我使用Navigator.push的代码的一部分:

new ListTile(
    onTap: (){
        Navigator.push(context, new MyCustomRoute(builder: (context) => new SecondPage("someTitle", "someDescription") ));
    },
    //The rest of the code goes here

我尝试运行此代码,但从未想到它会顺利运行,因为我从未向MaterialPageRoute小部件提供设置变量,但运行良好。

我的问题是,这是正确的方法吗?要么 我应该为MaterialPageRoute类提供设置吗? 而且由于我没有为MaterialPageRoute类提供设置变量,所以它在哪里得到设置的?在这部分代码中:

if (settings.isInitialRoute)
    return child;

我将不胜感激。预先感谢。

1 个答案:

答案 0 :(得分:1)

设置仅用于两件事-指定名称,并让路由知道它是否是要打开的第一页。

isInitialRoute只是告诉路由它是否是要打开的第一页;这很重要,因为您不希望在第一页放上动画。

由于似乎您的“自定义路线”实际上仅在第一页之后使用,因此您不必为此担心。因此,除非您开始将页面用作第一页,否则您可以忽略这些设置(即使那样,淡入淡出也不是最糟糕的事情)。