You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter开发中可控制移动数据开关和切换响铃静音模式的Dart包有哪些?

适用Dart包及实现方案

可用依赖包

  • 控制响铃/静音模式:使用flutter_volume_controller,支持跨平台切换静音、震动、响铃三种音频模式,不需要额外复杂权限配置。
  • 控制移动数据开关:安卓端使用android_flutter_mobile_data即可实现直接开关移动数据;受iOS系统限制,苹果设备没有公开API支持第三方应用直接修改移动数据状态,只能引导用户跳转至系统设置页手动操作。

前置配置(安卓端)

在android/app/src/main/AndroidManifest.xml中添加以下权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

安卓10及以上系统需要引导用户手动授予修改系统设置的特殊权限后,才能正常修改移动数据状态。

修改后完整代码

import 'package:flutter/material.dart';
import 'package:flutter_volume_controller/flutter_volume_controller.dart';
import 'package:android_flutter_mobile_data/android_flutter_mobile_data.dart';
import 'dart:io' show Platform;

void main() {
  runApp(MaterialApp(
    home: MyApp(),
  ));
}

class MyApp extends StatefulWidget {
  @override
  _State createState() => _State();
}

class _State extends State<MyApp> {
  bool switchStatus = true;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('Flutter 功能控制示例'),
        ),
        body: Center(
          child: Switch(
            value: switchStatus,
            onChanged: (value) async {
              setState(() {
                switchStatus = value;
              });
              if(value) {
                // 开启状态下执行关闭移动数据、切换静音
                // 切换为静音模式
                await FlutterVolumeController.setRingerMode(RingerMode.silent);
                // 安卓端关闭移动数据
                if(Platform.isAndroid) {
                  await AndroidFlutterMobileData.setMobileData(enable: false);
                }
                // iOS端可在这里加跳转系统设置的逻辑
              } else {
                // 关闭状态下恢复原有设置,可按需调整
                await FlutterVolumeController.setRingerMode(RingerMode.normal);
                if(Platform.isAndroid) {
                  await AndroidFlutterMobileData.setMobileData(enable: true);
                }
              }
            },
            activeTrackColor: Colors.yellow,
            activeColor: Colors.orangeAccent,
          ),
        ));
  }
}

内容的提问来源于stack exchange,提问作者Aman Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 18:12:00