90 lines
2.3 KiB
Dart
90 lines
2.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:aesthetica_wallpaper/models/recipe.dart';
|
|
|
|
// EditorProvider 持有当前编辑器的所有状态
|
|
class EditorProvider with ChangeNotifier {
|
|
// 从一个空白的 Recipe 开始
|
|
Recipe _currentRecipe = Recipe(id: '', baseImagePath: '');
|
|
|
|
// 获取当前状态的 getter
|
|
Recipe get currentRecipe => _currentRecipe;
|
|
|
|
// 动态模拟器状态
|
|
bool _isTimeAware = false;
|
|
bool get isTimeAware => _isTimeAware;
|
|
|
|
bool _isBatteryAware = false;
|
|
get isBatteryAware => _isBatteryAware;
|
|
|
|
// 当进入编辑器时,重置或加载一个新的 Recipe
|
|
void startEditing(String baseImagePath) {
|
|
_currentRecipe = Recipe(
|
|
id: DateTime.now().millisecondsSinceEpoch.toString(),
|
|
baseImagePath: baseImagePath,
|
|
);
|
|
// 重置动态开关
|
|
_isTimeAware = false;
|
|
_isBatteryAware = false;
|
|
notifyListeners();
|
|
}
|
|
|
|
// 当从"我的配方"加载时
|
|
void loadFromRecipe(Recipe recipe) {
|
|
_currentRecipe = recipe;
|
|
notifyListeners();
|
|
}
|
|
|
|
// 更新各种参数的方法
|
|
// 每个方法都会更新值并通知监听器 (UI) 重建
|
|
|
|
void setBrightness(double value) {
|
|
_currentRecipe = _currentRecipe.copyWith(brightness: value);
|
|
notifyListeners();
|
|
}
|
|
|
|
void setContrast(double value) {
|
|
_currentRecipe = _currentRecipe.copyWith(contrast: value);
|
|
notifyListeners();
|
|
}
|
|
|
|
void setSaturation(double value) {
|
|
_currentRecipe = _currentRecipe.copyWith(saturation: value);
|
|
notifyListeners();
|
|
}
|
|
|
|
void setBlur(double value) {
|
|
_currentRecipe = _currentRecipe.copyWith(blur: value);
|
|
notifyListeners();
|
|
}
|
|
|
|
void setPixelate(double value) {
|
|
_currentRecipe = _currentRecipe.copyWith(pixelate: value);
|
|
notifyListeners();
|
|
}
|
|
|
|
void setText(String text) {
|
|
_currentRecipe = _currentRecipe.copyWith(overlayText: text);
|
|
notifyListeners();
|
|
}
|
|
|
|
void setFont(String font) {
|
|
_currentRecipe = _currentRecipe.copyWith(fontFamily: font);
|
|
notifyListeners();
|
|
}
|
|
|
|
void setTextColor(Color color) {
|
|
_currentRecipe = _currentRecipe.copyWith(textColor: color.toARGB32());
|
|
notifyListeners();
|
|
}
|
|
|
|
void setTimeAware(bool value) {
|
|
_isTimeAware = value;
|
|
notifyListeners();
|
|
}
|
|
|
|
void setBatteryAware(bool value) {
|
|
_isBatteryAware = value;
|
|
notifyListeners();
|
|
}
|
|
}
|