| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /// 全局 Provider — API 服务 + 连接状态
- import 'package:flutter_riverpod/flutter_riverpod.dart';
- import '../services/api_service.dart';
- final apiServiceProvider = Provider<ApiService>((ref) {
- return ApiService();
- });
- /// 连接状态
- enum ConnectionStatus { unconfigured, configured, error }
- class ConnectionState {
- final ConnectionStatus status;
- final String? serverUrl;
- final String? errorMessage;
- const ConnectionState({this.status = ConnectionStatus.unconfigured, this.serverUrl, this.errorMessage});
- }
- class ConnectionNotifier extends StateNotifier<ConnectionState> {
- final ApiService _api;
- ConnectionNotifier(this._api) : super(const ConnectionState());
- Future<void> initialize() async {
- await _api.loadConfig();
- if (_api.isConfigured) {
- state = ConnectionState(status: ConnectionStatus.configured);
- }
- }
- Future<bool> connect(String url, String token) async {
- final valid = await _api.verifyToken(url, token);
- if (valid) {
- await _api.saveConfig(url, token);
- state = ConnectionState(status: ConnectionStatus.configured, serverUrl: url);
- return true;
- } else {
- state = ConnectionState(status: ConnectionStatus.error, errorMessage: 'Token 验证失败');
- return false;
- }
- }
- Future<void> disconnect() async {
- await _api.clearConfig();
- state = const ConnectionState();
- }
- }
- final connectionProvider = StateNotifierProvider<ConnectionNotifier, ConnectionState>((ref) {
- final api = ref.watch(apiServiceProvider);
- return ConnectionNotifier(api);
- });
- /// WebDAV 配置状态(从服务端拉取)
- final webdavConfiguredProvider = StateProvider<bool>((ref) => false);
- final webdavUrlProvider = StateProvider<String>((ref) => '');
- final webdavUserProvider = StateProvider<String>((ref) => '');
|