Initial project
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
/// 设置主题用例
|
||||
///
|
||||
/// 职责:幂等校验——当前模式与目标模式相同时直接返回,不触发任何变更。
|
||||
///
|
||||
/// 持久化由 [ThemeModeNotifier.setMode] 负责(在 `onApply` 被调用后执行),
|
||||
/// UseCase 不感知存储细节。
|
||||
///
|
||||
/// ## 数据流
|
||||
///
|
||||
/// ```
|
||||
/// ThemeViewModel.setMode(mode)
|
||||
/// → ★ SetThemeUseCase.execute() ★ ← 你在这里
|
||||
/// → 幂等校验(相同模式 → 直接返回)
|
||||
/// → onApply(mode)
|
||||
/// → ThemeModeNotifier.setMode() ← 更新内存 + 写入持久化(TODO)
|
||||
/// ```
|
||||
class SetThemeUseCase {
|
||||
const SetThemeUseCase();
|
||||
|
||||
/// 执行主题切换
|
||||
///
|
||||
/// [current] 当前生效的主题模式
|
||||
/// [requested] 用户选择的目标模式
|
||||
/// [onApply] 校验通过后回调,由 ViewModel 负责调用 ThemeModeNotifier
|
||||
void execute({
|
||||
required ThemeMode current,
|
||||
required ThemeMode requested,
|
||||
required void Function(ThemeMode mode) onApply,
|
||||
}) {
|
||||
if (current == requested) return;
|
||||
onApply(requested);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user