pub package

用于在Flutter中实现夜间模式/夜间阅读器效果的包。适用于需要此功能的应用程序。例如:图书应用、博客应用等……

请注意,此包(目前)与操作系统/原生夜间模式无关。它只是使其子树处于夜间阅读器的效果之下。

特点

  • 对此小部件子树应用可控的夜间阅读器效果。
  • 树中可以存在此小部件的多个实例,每个实例都有自己的夜间阅读器效果颜色、动画、参数……

入门

  • 首先导入它
import 'package:night_reader/night_reader.dart';

用法

要使整个应用处于该效果之下,只需将此小部件包装在MaterialApp周围并控制value参数,整个应用都会受到影响。

@override
Widget build(BuildContext context) {
  return AnimatedNightReader(
    value: 1,
    duration: const Duration(seconds: 2),
    child: MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    ),
  );
}

如果只想将效果应用于特定子树,则可以将此小部件包装在需要的地方。

@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(),
    body: Center(
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          AnimatedNightReader(
            tint: Colors.blue,
            value: value1,
            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: value2,
            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"),
            ),
          ),
        ],
      ),
    ),
  );
}

此包带有AnimatedNightReader,当更改属性时,它将在值[0-1]之间自动动画。其他属性动画也受支持。

但是,如果需要,可以通过任何触发rebuild的方法来控制此小部件的非动画版本:NightReader

有关每个属性的更多信息,请参阅文档。

GitHub

查看 Github