Flutter CupertinoFullscreenDialogTransition Widget使用详解

CupertinoFullscreenDialogTransition Widget是一个Cupertino风格的全屏对话框过渡动画。通常在使用CupertinoPageRoute路由时,通过设置fullscreenDialog参数为true来使用该过渡动画。

CupertinoFullscreenDialogTransition Widget具有以下属性:

  • primaryRouteAnimation: 一个Animation对象,表示当前(主)路由的动画。
  • secondaryRouteAnimation: 一个Animation对象,表示要进入的(次要)路由的动画。
  • child: 一个Widget类型的值,表示要执行动画的Widget。

下面是一个使用CupertinoFullscreenDialogTransition Widget的例子:

class CupertinoDialogDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Cupertino Dialog Demo'),
      ),
      body: Center(
        child: CupertinoButton(
          child: Text('Show Dialog'),
          onPressed: () {
            Navigator.of(context).push(
              CupertinoPageRoute(
                fullscreenDialog: true,
                builder: (BuildContext context) => CupertinoDialog(
                  title: Text('Delete Item?'),
                  content: Text('Are you sure you want to delete this item?'),
                  actions: [
                    CupertinoDialogAction(
                      child: Text('Cancel'),
                      onPressed: () => Navigator.of(context).pop(),
                    ),
                    CupertinoDialogAction(
                      child: Text('Delete'),
                      isDestructiveAction: true,
                      onPressed: () {
                        // Perform delete operation
                        Navigator.of(context).pop();
                      },
                    ),
                  ],
                ),
              ),
            );
          },
        ),
      ),
    );
  }
}

在上面的例子中,我们使用了CupertinoPageRoute路由,并将fullscreenDialog参数设置为true。这意味着我们将使用CupertinoFullscreenDialogTransition Widget来过渡到CupertinoDialog Widget。

CupertinoFullscreenDialogTransition Widget通常用于在Cupertino应用程序中为用户提供一个无缝的全屏过渡动画体验。注意,它通常在使用CupertinoPageRoute路由时使用,而不是在自定义路由时使用。

powered by Gitbook© 2023 编外计划 | 最后修改: 2023-11-24 03:36:59

results matching ""

    No results matching ""