Flutter夜间阅读模式插件night_reader的使用

Flutter夜间阅读模式插件night_reader的使用

特性

  • 可以在子树中应用可控的夜间阅读效果。
  • 在树中可以有多个实例,每个实例都有自己的夜间阅读效果颜色、动画和其他参数。

开始使用

首先导入该库:

import 'package:night_reader/night_reader.dart';

使用示例

应用到整个应用程序

为了使整个应用程序受到夜间阅读模式的影响,可以在MaterialApp周围包裹AnimatedNightReader并控制其value参数。下面是一个完整的示例:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return AnimatedNightReader(
      value: 1, // 控制夜间阅读模式的强度,范围为0到1
      duration: const Duration(seconds: 2), // 动画持续时间
      child: MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(primarySwatch: Colors.blue),
        home: MyHomePage(title: 'Flutter Demo Home Page'),
      ),
    );
  }
}

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

  final String title;

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

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Text('这是一个示例页面'),
      ),
    );
  }
}

整个应用的夜间阅读模式

应用到特定子树

如果只想在某个子树上应用夜间阅读模式,可以在该子树中包裹AnimatedNightReader。下面是一个具体的例子:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo Home Page'),
      ),
      body: Center(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            AnimatedNightReader(
              tint: Colors.blue, // 设置夜间阅读模式的颜色
              value: 0.8, // 控制夜间阅读模式的强度
              duration: const Duration(seconds: 2), // 动画持续时间
              child: Container(
                height: 300,
                width: 300,
                color: Colors.white,
                alignment: Alignment.center,
                child: const Text("Sub tree 1"), // 子树中的文本
              ),
            ),
            AnimatedNightReader(
              value: 0.5, // 控制夜间阅读模式的强度
              tint: Colors.red, // 设置夜间阅读模式的颜色
              duration: const Duration(seconds: 2), // 动画持续时间
              child: Container(
                height: 300,
                width: 300,
                color: Colors.white,
                alignment: Alignment.center,
                child: const Text("Sub tree 2"), // 子树中的文本
              ),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter夜间阅读模式插件night_reader的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter夜间阅读模式插件night_reader的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


night_reader 是一个用于在 Flutter 应用中实现夜间阅读模式的插件。它可以帮助开发者为应用添加一个简单的夜间模式切换功能,通常用于阅读类应用或任何需要在暗色背景和亮色背景之间切换的应用。

安装插件

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

dependencies:
  flutter:
    sdk: flutter
  night_reader: ^1.0.0  # 请使用最新版本

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

基本使用

  1. 导入插件

    在你需要使用 night_reader 的文件中导入插件:

    import 'package:night_reader/night_reader.dart';
    
  2. 初始化夜间模式

    你可以在应用的入口处初始化夜间模式。例如,在 main.dart 中:

    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await NightReader.init(); // 初始化夜间模式
      runApp(MyApp());
    }
    
  3. 切换夜间模式

    你可以在应用中添加一个按钮来切换夜间模式。例如:

    FloatingActionButton(
      onPressed: () {
        NightReader.toggle(); // 切换夜间模式
      },
      child: Icon(Icons.nightlight_round),
    );
    
  4. 应用夜间模式样式

    night_reader 插件提供了一个 NightReaderBuilder,它可以让你根据当前的夜间模式状态来动态调整应用的样式。例如:

    NightReaderBuilder(
      builder: (context, isNightMode) {
        return MaterialApp(
          theme: isNightMode ? ThemeData.dark() : ThemeData.light(),
          home: Scaffold(
            appBar: AppBar(
              title: Text('Night Reader Example'),
            ),
            body: Center(
              child: Text('This is an example of night reader.'),
            ),
            floatingActionButton: FloatingActionButton(
              onPressed: () {
                NightReader.toggle(); // 切换夜间模式
              },
              child: Icon(Icons.nightlight_round),
            ),
          ),
        );
      },
    );
回到顶部