Flutter应用设置插件 - 轻松打开iOS和Android系统设置

app_settings

一个用于从Flutter应用中打开iOS和Android手机设置的插件。

功能特性

  • 🚀 跨平台支持 - 完美支持iOS和Android两大移动平台
  • ⚙️ 多种设置类型 - 支持打开位置、Wi-Fi、蓝牙、通知、声音等多种系统设置
  • 🔧 Android Q面板支持 - 支持Android Q及以上版本的设置面板功能
  • 📱 Swift包管理器 - 支持SPM方式集成到iOS项目
  • 🎯 灵活配置 - 可指定特定设置类型,平台不支持时自动回退到通用设置
  • 🔄 新任务模式 - Android平台支持在新Activity中打开设置页面

安装指南

添加依赖

pubspec.yaml文件中添加依赖:

yaml 复制代码
dependencies:
  app_settings: ^6.1.1

或使用命令行:

bash 复制代码
flutter pub add app_settings

导入包

在Dart代码中导入:

dart 复制代码
import 'package:app_settings/app_settings.dart';

iOS配置

如果项目使用Objective-C,需要在Podfile中添加:

ruby 复制代码
target 'Runner' do
  use_frameworks!

如需使用Swift Package Manager,启用Swift支持:

bash 复制代码
flutter config --enable-swift-package-manager

使用说明

基础用法

打开应用的设置页面:

dart 复制代码
Widget build(BuildContext context) {
  return ElevatedButton(
    onPressed: () => AppSettings.openAppSettings(),
    child: const Text('打开应用设置'),
  );
}

指定设置类型

打开特定类型的设置页面:

dart 复制代码
Widget build(BuildContext context) {
  return ElevatedButton(
    onPressed: () => AppSettings.openAppSettings(type: AppSettingsType.location),
    child: const Text('打开位置设置'),
  );
}

Android Q设置面板

在Android Q及以上版本打开设置面板:

dart 复制代码
Widget build(BuildContext context) {
  return ElevatedButton(
    onPressed: () => AppSettings.openAppSettingsPanel(AppSettingsPanelType.volume),
    child: const Text('打开音量设置面板'),
  );
}

支持的所有设置类型

插件支持打开以下设置类型:

  • 应用设置 (AppSettingsType.settings)
  • 位置设置 (AppSettingsType.location)
  • Wi-Fi设置 (AppSettingsType.wifi)
  • 蓝牙设置 (AppSettingsType.bluetooth)
  • 通知设置 (AppSettingsType.notification)
  • 声音设置 (AppSettingsType.sound)
  • 显示设置 (AppSettingsType.display)
  • 日期设置 (AppSettingsType.date)
  • 应用语言设置 (AppSettingsType.appLocale) - Android 13+
  • 开发者设置 (AppSettingsType.developer)
  • 以及其他系统设置

核心代码

主要API调用

dart 复制代码
/// 打开应用设置的主方法
/// [type]: 设置类型,默认为通用设置
/// [asAnotherTask]: Android平台是否在新Activity中打开
Future<void> openAppSettings({
  AppSettingsType type = AppSettingsType.settings,
  bool asAnotherTask = false,
}) async {
  // 实现平台特定的设置打开逻辑
  // iOS使用UIApplication.openSettingsURLString
  // Android使用Intent跳转到对应设置页面
}

Android平台实现

dart 复制代码
/// Android平台的设置打开实现
Future<void> _openAppSettingsAndroid(
    AppSettingsType type, bool asAnotherTask) async {
  // 根据设置类型构建对应的Intent
  final Intent intent = _getSettingsIntent(type);
  
  // 设置Intent标志位
  if (asAnotherTask) {
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  }
  
  // 启动设置Activity
  await _channel.invokeMethod('openAppSettings', {
    'intent': intent.toUri(0),
    'asAnotherTask': asAnotherTask,
  });
}

iOS平台实现

dart 复制代码
/// iOS平台的设置打开实现
Future<void> _openAppSettingsIOS(AppSettingsType type) async {
  final String urlString;
  
  // 根据设置类型构建对应的URL Scheme
  switch (type) {
    case AppSettingsType.location:
      urlString = 'App-Prefs:root=Privacy&path=LOCATION';
      break;
    case AppSettingsType.wifi:
      urlString = 'App-Prefs:root=WIFI';
      break;
    // 其他设置类型的URL Scheme处理
    default:
      urlString = UIApplication.openSettingsURLString;
  }
  
  // 通过URL打开系统设置
  if (await canLaunch(urlString)) {
    await launch(urlString);
  }
}

设置面板支持

dart 复制代码
/// Android Q设置面板打开方法
Future<void> openAppSettingsPanel(AppSettingsPanelType type) async {
  // 检查Android版本,仅Q及以上支持
  if (defaultTargetPlatform == TargetPlatform.android) {
    final String panelType = _getPanelTypeString(type);
    await _channel.invokeMethod('openAppSettingsPanel', {
      'panelType': panelType,
    });
  } else {
    // 其他平台回退到通用设置
    await openAppSettings();
  }
}

该插件提供了简洁易用的API,让开发者能够轻松地在Flutter应用中集成系统设置跳转功能,提升用户体验。

相关推荐
智驱力人工智能2 分钟前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
qq_160144876 分钟前
亲测!2026年零基础学AI的入门干货,新手照做就能上手
人工智能
Howie Zphile6 分钟前
全面预算管理难以落地的核心真相:“完美模型幻觉”的认知误区
人工智能·全面预算
人工不智能5779 分钟前
拆解 BERT:Output 中的 Hidden States 到底藏了什么秘密?
人工智能·深度学习·bert
盟接之桥11 分钟前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
kfyty72511 分钟前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
h64648564h28 分钟前
CANN 性能剖析与调优全指南:从 Profiling 到 Kernel 级优化
人工智能·深度学习
心疼你的一切29 分钟前
解密CANN仓库:AIGC的算力底座、关键应用与API实战解析
数据仓库·深度学习·aigc·cann
数据与后端架构提升之路30 分钟前
论系统安全架构设计及其应用(基于AI大模型项目)
人工智能·安全·系统安全
忆~遂愿34 分钟前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能