Flutter屏幕亮度管理插件brightness_pro的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter屏幕亮度管理插件brightness_pro的使用

功能特性

brightness_pro 插件允许你通过拖动和滑块功能调整屏幕亮度。它提供了对屏幕亮度的精确控制,使你可以根据自己的需求和偏好进行调整。该插件支持将屏幕亮度设置为最多100个单位,从而可以精细地调整屏幕亮度以满足你的要求。

XRecorder_Edited_21112023_164921 XRecorder_21112023_170151

入门指南

要在项目中使用 brightness_pro 插件,首先需要在 pubspec.yaml 文件中添加依赖:

dependencies:
  brightness_pro: ^0.0.5

然后运行 flutter pub get 来安装插件。

使用方法

brightness_pro 提供了多种方式来调整屏幕亮度,以下是几种常见的用法:

  1. 基本用法

    BrightnessProSlider()
    
  2. 水平或垂直显示

    BrightnessProSlider(display: Display.VERTICAL)  // 垂直显示
    BrightnessProSlider(display: Display.HORIZONTAL)  // 水平显示
    
  3. 拖动方向调整亮度

    BrightnessProSlider.brightnessProDragDirection()
    
  4. 底部滑块调整亮度

    BrightnessProSlider.brightnessProSlideBottom()
    

完整示例代码

以下是一个完整的示例代码,展示了如何在Flutter应用中使用 brightness_pro 插件来调整屏幕亮度:

import 'package:brightness_pro/brightness_pro_slider.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: SingleChildScrollView(
        child: SizedBox(
          width: MediaQuery.of(context).size.width,
          height: MediaQuery.of(context).size.height,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              // 垂直滑块
              BrightnessProSlider(
                display: Display.VERTICAL,
                sliderSize: 200,  // 设置滑块大小
                visibleWidget: false,  // 隐藏额外的控件
                sliderActiveColor: Colors.orange,  // 设置滑块激活时的颜色
              ),
              const SizedBox(height: 30),  // 添加间距
              
              // 水平滑块
              BrightnessProSlider(
                display: Display.HORIZONTAL,
              ),
              const SizedBox(height: 30),  // 添加间距
              
              /* 
              // 拖动方向调整亮度(可选)
              Container(
                color: Colors.deepOrange,
                width: 50,
                height: 250,
                child: BrightnessProSlider.brightnessProDragDirection(),
              ),
              */
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter屏幕亮度管理插件brightness_pro的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter屏幕亮度管理插件brightness_pro的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用brightness_pro插件来管理屏幕亮度的代码示例。brightness_pro插件允许你动态地调整设备的屏幕亮度。

1. 添加依赖

首先,你需要在pubspec.yaml文件中添加brightness_pro依赖:

dependencies:
  flutter:
    sdk: flutter
  brightness_pro: ^最新版本号  # 请替换为最新版本号

然后运行flutter pub get来安装依赖。

2. 导入插件

在你的Dart文件中导入brightness_pro插件:

import 'package:brightness_pro/brightness_pro.dart';

3. 使用插件

以下是一个简单的示例,展示了如何使用brightness_pro插件来获取和设置屏幕亮度:

import 'package:flutter/material.dart';
import 'package:brightness_pro/brightness_pro.dart';

void main() {
  runApp(MyApp());
}

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

class _MyAppState extends State<MyApp> {
  BrightnessPro _brightnessPro = BrightnessPro();
  double _currentBrightness = 1.0;

  @override
  void initState() {
    super.initState();
    // 获取当前屏幕亮度
    _brightnessPro.getBrightness().then((brightness) {
      setState(() {
        _currentBrightness = brightness;
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Screen Brightness Manager'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text(
                'Current Brightness: $_currentBrightness',
                style: TextStyle(fontSize: 24),
              ),
              Slider(
                value: _currentBrightness,
                min: 0.0,
                max: 1.0,
                divisions: 10,
                onChanged: (value) {
                  setState(() {
                    _currentBrightness = value;
                    // 设置屏幕亮度
                    _brightnessPro.setBrightness(_currentBrightness);
                  });
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}

4. 权限处理

在Android上,改变屏幕亮度通常需要WRITE_SETTINGS权限。你需要在AndroidManifest.xml文件中请求这个权限,并在运行时请求用户授权。

AndroidManifest.xml中添加权限:

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

在运行时请求权限(在MainActivity.ktMainActivity.java中):

对于Kotlin:

import android.Manifest
import android.content.pm.PackageManager
import android.os.Bundle
import android.provider.Settings
import androidx.annotation.NonNull
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import io.flutter.embedding.android.FlutterActivity

class MainActivity: FlutterActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        if (!Settings.System.canWrite(this)) {
            val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
            intent.data = Uri.parse("package:$packageName")
            startActivityForResult(intent, 200)
        }
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == 200) {
            if (Settings.System.canWrite(this)) {
                // 权限被授予
            } else {
                // 权限被拒绝
            }
        }
    }
}

对于Java:

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import io.flutter.embedding.android.FlutterActivity;

public class MainActivity extends FlutterActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (!Settings.System.canWrite(this)) {
            Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
            intent.setData(Uri.parse("package:" + getPackageName()));
            startActivityForResult(intent, 200);
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 200) {
            if (Settings.System.canWrite(this)) {
                // 权限被授予
            } else {
                // 权限被拒绝
            }
        }
    }
}

请注意,iOS上通常不需要额外的权限来更改屏幕亮度。

这样,你就可以在Flutter应用中通过brightness_pro插件来管理屏幕亮度了。

回到顶部