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

问题描述 投票:0回答:1

我有一个ListTile列表,每当我点击它们时,都会出现一个新页面。目前,新页面将向上滑动(出现时)并向下滑动(移除时)。我想将过渡动画更改为Fade。

我已经在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;

我很感激任何启发。提前致谢。

dart flutter
1个回答
1
投票

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

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

由于您的自定义路线似乎仅在第一页之后使用,因此您无需担心这一点。所以你可能会忽略这些设置,除非你开始使用该页面作为你的第一页(即便如此,淡入可能不是最糟糕的事情)。

© www.soinside.com 2019 - 2024. All rights reserved.