permission_intro_dialog.dart 1.36 KB
import 'package:flutter/material.dart';

import 'permission_dialog_shell.dart';

/// 首次使用某权限前的用途说明弹窗
///
/// 返回 `true` 表示用户点击「继续」,可以继续进行权限申请与后续业务;
/// 返回 `false` 表示用户点击「暂不开启」或点击遮罩关闭。
class PermissionIntroDialog extends StatelessWidget {
  const PermissionIntroDialog({
    super.key,
    required this.title,
    required this.description,
  });

  /// 外部传入的完整标题,原样展示
  final String title;

  /// 外部传入的完整说明,原样展示
  final String description;

  @override
  Widget build(BuildContext context) {
    return PermissionDialogShell(
      title: title,
      description: description,
      primaryText: '继续',
      onPrimary: () => Navigator.of(context).pop(true),
      secondaryText: '暂不开启',
      onSecondary: () => Navigator.of(context).pop(false),
    );
  }
}

/// 展示首次使用权限前的用途说明弹窗
///
/// 返回 `true` 表示用户同意继续。
Future<bool> showPermissionIntroDialog(
  BuildContext context, {
  required String title,
  required String description,
}) async {
  final result = await showDialog<bool>(
    context: context,
    builder: (BuildContext context) => PermissionIntroDialog(title: title, description: description),
  );
  return result == true;
}