pda_template/lib/core/di/providers.dart
liyuqi b16427f208 1. 添加接口返回值
2. 解决返回类型冲突
2025-04-15 12:36:12 +08:00

84 lines
3.1 KiB
Dart

import 'package:flutter/services.dart' show rootBundle;
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../features/page/domain/models/base_wms_api_response.dart';
import '/features/page/business_logic/notifiers/page_repository_notifier.dart';
import '/features/page/data/repositories/page_repository_impl.dart';
import '/features/page/domain/repositories/page_repository.dart';
import '/features/stock/business_logic/notifiers/stock_in_manual_notifier.dart';
import '/features/stock/business_logic/notifiers/stock_out_empty_notifier.dart';
import '../../app/enum/config_path_enum.dart';
import '../api/clients/wms_api_client.dart';
import '../api/clients/impl/wms_v1_api_client.dart';
import '../api/config/api_config.dart';
import '../../features/stock/data/repositories/stock_repository_impl.dart';
import '../../features/stock/domain/repositories/stock_repository.dart';
import '../../features/stock/business_logic/notifiers/stock_in_empty_notifier.dart';
import '../../features/stock/domain/models/base_wms_api_response.dart';
final _defaultApiConfig = ApiConfig.fromYaml('''
wms:
require_stock_out: "/wms/task/requireStockOut"
require_stock_in: "/wms/task/requireStockIn"
test: "/test/test"
baseUrl: "http://10.0.2.2:12315"
''');
final apiConfigProvider = FutureProvider<ApiConfig>((ref) async {
final configString = await rootBundle.loadString(
ConfigPathEnum.endPoints.configPath,
);
return ApiConfig.fromYaml(configString);
});
final wmsApiClientProvider = Provider<WmsApiClient>((ref) {
final configAsync = ref.watch(apiConfigProvider);
return configAsync.when(
data: (config) => WmsV1ApiClient(apiConfig: config),
loading: () => WmsV1ApiClient(apiConfig: _defaultApiConfig),
error: (err, stack) => WmsV1ApiClient(apiConfig: _defaultApiConfig),
);
});
final stockRepositoryProvider = Provider<StockRepository>((ref) {
final apiClient = ref.watch(wmsApiClientProvider);
return StockRepositoryImpl(wmsApiClient: apiClient);
});
final pageRepositoryProvider = Provider<PageRepository>((ref) {
final apiClient = ref.watch(wmsApiClientProvider);
return PageRepositoryImpl(wmsApiClient: apiClient);
});
final stockInEmptyNotifierProvider = StateNotifierProvider.autoDispose<
StockInEmptyNotifier,
AsyncValue<StockBaseWmsApiResponse?>
>((ref) {
final repository = ref.watch(stockRepositoryProvider);
return StockInEmptyNotifier(repository);
});
final stockInNotifierProvider = StateNotifierProvider.autoDispose<
StockInManualNotifier,
AsyncValue<StockBaseWmsApiResponse?>
>((ref) {
final repository = ref.watch(stockRepositoryProvider);
return StockInManualNotifier(repository);
});
final pageNotifierProvider = StateNotifierProvider.autoDispose<
PageRepositoryNotifier,
AsyncValue<PageBaseWmsApiResponse?>
>((ref) {
final repository = ref.watch(pageRepositoryProvider);
return PageRepositoryNotifier(repository);
});
final stockOutEmptyNotifierProvider = StateNotifierProvider.autoDispose<
StockOutEmptyNotifier,
AsyncValue<StockBaseWmsApiResponse?>
>((ref) {
final repository = ref.watch(stockRepositoryProvider);
return StockOutEmptyNotifier(repository);
});