dart 如何在flutter中将类作为参数传递?

fzsnzjdm  于 2023-01-28  发布在  Flutter
关注(0)|答案(1)|浏览(267)

我正在flutter上开发一个Android应用程序,在那里我想通过类作为一个参数。我是一个页面,所有的食物食谱显示和数据来自数据库。当任何食谱被点击比新的屏幕将出现,用户将看到该食谱的细节现在想要的是,当普通用户点击食谱,用户将移动到正常屏幕编辑/删除选项不存在,当管理员单击屏幕时,他将移动到存在编辑/删除选项的屏幕

class RecipeCard extends StatelessWidget {
  final String title;
  final String rating;
  final String cookTime;
  final String thumbnailUrl;

  const RecipeCard({
    super.key,
    required this.title,
    required this.cookTime,
    required this.rating,
    required this.thumbnailUrl,
  });

  @override
  Widget build(BuildContext context) {
    return InkWell(
      onTap: () {
        Navigator.push(
          context,
          PageRouteBuilder(
            transitionDuration: const Duration(seconds: 1),
            transitionsBuilder: (context, animation, animationTime, child) {
              animation = CurvedAnimation(
                  parent: animation, curve: Curves.fastLinearToSlowEaseIn);
              return ScaleTransition(
                scale: animation,
                alignment: Alignment.center,
                child: child,
              );
            },
            pageBuilder: (context, animation, animationTime) {
              return UpdateOrDeleteRecipe(
                title: title,
                cookTime: cookTime,
                rating: rating,
                thumbnailUrl: thumbnailUrl,
              );
            },
          ),
        );
      },
      child: Container(...),
    );
  }
}

现在在上面的代码中,作为返回InkWell( onTap: () {,我希望传递类名,这样当卡片被单击时,它将移动到我希望它移动的类。
我该怎么做呢?记住当我移动到下一页时,下面的参数也会移动到下一页。

return UpdateOrDeleteRecipe(
  title: title,
  cookTime: cookTime,
  rating: rating,
  thumbnailUrl: thumbnailUrl,
);
dvtswwa3

dvtswwa31#

如果管理员和用户有两个单独的屏幕,您可以在pageBuilder中放置isAdmin ? UpdateOrDeleteRecipe(...) : Detail()这样的条件,或者您可以为管理员和用户创建一个屏幕,并在屏幕参数上放置bool isAdmin参数,当管理员进入该屏幕时,isAdmin将为真,因此,您可以显示编辑/删除选项,如果isAdmin为假,则不显示这些选项。

相关问题