24 lines
680 B
Dart
24 lines
680 B
Dart
|
|
import 'package:flutter/material.dart';
|
|||
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|||
|
|
|
|||
|
|
/// 主题模式管理,默认跟随系统(logo 明度均值 245/255,「明亮轻盈」才是品牌主场)。
|
|||
|
|
class ThemeModeNotifier extends Notifier<ThemeMode> {
|
|||
|
|
@override
|
|||
|
|
ThemeMode build() => ThemeMode.system;
|
|||
|
|
|
|||
|
|
/// 设置主题模式。
|
|||
|
|
void setThemeMode(ThemeMode mode) {
|
|||
|
|
state = mode;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// 在浅色 / 深色之间切换。
|
|||
|
|
void toggle() {
|
|||
|
|
state = state == ThemeMode.dark ? ThemeMode.light : ThemeMode.dark;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// 主题模式提供者。
|
|||
|
|
final themeModeProvider = NotifierProvider<ThemeModeNotifier, ThemeMode>(
|
|||
|
|
ThemeModeNotifier.new,
|
|||
|
|
);
|