首页 > 解决方案 > 为什么我的 CupertinoActionSheet 从顶部出现?

问题描述

一切正常,只是工作表出现在顶部而不是底部。我希望 cupertinoactionsheet 默认从底部显示。

我目前正在使用 Android 模拟器,但我怀疑这是否是工作表从顶部出现的原因。

附上我的代码

Future<bool> showReportDialog({
  @required BuildContext context,
}) async {
  return showCupertinoDialog(
    context: context,
    builder: (context) => CupertinoActionSheet(
      title: const Text('Make Your Space Safe',
          style: TextStyle(
              fontSize: 18, color: Colors.black, fontWeight: FontWeight.w600)),
      message: const Text('What to report this user for?',
          style: TextStyle(
              fontSize: 16.5,
              color: Colors.black38,
              fontWeight: FontWeight.w500)),
      actions: <CupertinoActionSheetAction>[
        CupertinoActionSheetAction(
          child: const Text(
            'Scam',
          ),
          onPressed: () {
            afterReport();
            print("Reported user for SCAM");
          },
        ),
        CupertinoActionSheetAction(
          child: const Text('Bots/Spam'),
          onPressed: () {
            afterReport();
            print("Reported user for BOTS/SPAM");
          },
        ),
        CupertinoActionSheetAction(
          child: const Text('Sexually harassing'),
          onPressed: () {
            afterReport();
            print("Reported user for SEXUALLY HARASSSING");
          },
        ),
        CupertinoActionSheetAction(
          child: const Text('Offensive/abusive behaviour'),
          onPressed: () {
            afterReport();
            print('Reported user for OFFENSIVE/ABUSIVE BEHAVIOUR');
          },
        ),
        CupertinoActionSheetAction(
          child: const Text('I want to write more',
              style: TextStyle(fontWeight: FontWeight.bold)),
          onPressed: () {
            Navigator.push(
                context,
                new MaterialPageRoute(
                    builder: (BuildContext context) => ReportUser()));
          },
        ),
        CupertinoActionSheetAction(
          child: const Text('Cancel'),
          onPressed: () {
            Navigator.pop(context);
          },
        )
      ],
    ),
  );
}

标签: flutterdartpopupflutter-cupertino

解决方案


您需要使用showCupertinoModalPopup而不是showCupertinoDialog

showCupertinoModalPopup(
  context: context,
  builder: (context) => CupertinoActionSheet(
    title: const Text('Make Your Space Safe',
                      style: TextStyle(
                        fontSize: 18,
                        color: Colors.black,
                        fontWeight: FontWeight.w600)),
...

推荐阅读