搜索分类、插件与代码仓

插件详情v1.0.1

dynamic_theme

在运行时更改主题,同时在重启之间保留亮度设置

近 30 天下载
875
喜欢数
136
Pub 分数
40

安装插件

flutter pub add dynamic_theme

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

Dynamic Theme 是一个 Flutter 包,可实现运行时主题切换,让用户无缝在亮色和暗色模式之间切换。它会自动在应用重启后保留亮度设置,确保一致的用户体验。该包可轻松集成到 MaterialApp 中,并提供简单的 API 来动态更新主题。非常适合希望提供可自定义外观选项而无需完全重建的应用。

适合场景

  • 运行时主题切换
  • 重启后保留用户偏好
  • 在移动应用中支持深色模式
  • 实时自定义UI外观
  • 通过主题灵活性提升可访问性

主要特点

  • 实时主题更新
  • 自动亮度持久性
  • 与 MaterialApp 的简单集成
  • 支持浅色和深色模式
  • 最小的样板代码

适合对象

  • 需要动态主题的应用
  • 开发者优先考虑用户体验
  • 支持暗色模式的项目
  • 跨平台移动应用
  • 可自定义用户界面的应用程序

使用建议

  • 仅限亮度和主题更改
  • 不支持超出内置的自定义主题类型
  • 需要手动处理主题特定的资源
  • 不适合复杂的主题系统
  • 依赖 MaterialApp 以获得完整功能

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

dynamic_theme

Dynamically changing your theme without hassle

This packages manages changing your theme during runtime and persiting that theme.

I wrote a medium post about this, check it out here!

Include in your project

dependencies:
  dynamic_theme: ^1.0.1

run packages get and import it

import 'package:dynamic_theme/dynamic_theme.dart';

if you want the dialog:

import 'package:dynamic_theme/theme_switcher_widgets.dart';

Usage

Wrap your material app like this:


class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new DynamicTheme(
      defaultBrightness: Brightness.light,
      data: (brightness) => new ThemeData(
        primarySwatch: Colors.indigo,
        brightness: brightness,
      ),
      themedWidgetBuilder: (context, theme) {
        return new MaterialApp(
          title: 'Flutter Demo',
          theme: theme,
          home: new MyHomePage(title: 'Flutter Demo Home Page'),
        );
      }
    );
  }
}

Change the theme like this:

  void changeBrightness() {
    DynamicTheme.of(context).setBrightness(Theme.of(context).brightness == Brightness.dark? Brightness.light: Brightness.dark);
  }
  
  void changeColor() {
    DynamicTheme.of(context).setThemeData(new ThemeData(
        primaryColor: Theme.of(context).primaryColor == Colors.indigo? Colors.red: Colors.indigo
    ));
  }

When changing the brightness with setBrightness, it is additionally stored in the shared preferences.

Also included

A dialog widget to change the brightness!

Getting Started

For help getting started with Flutter, view our online documentation.

For help on editing package code, view the documentation.

所属分类

依赖

依赖清单 1 项

源码仓库

使用此插件的项目

暂无相关数据。