82 lines
3.0 KiB
Dart
82 lines
3.0 KiB
Dart
import 'package:flutter/services.dart' show rootBundle;
|
|
import 'package:flutter_riverpod/flutter_riverpod.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';
|
|
|
|
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<void>>((
|
|
ref,
|
|
) {
|
|
final repository = ref.watch(stockRepositoryProvider);
|
|
return StockInEmptyNotifier(repository);
|
|
});
|
|
|
|
final stockInNotifierProvider =
|
|
StateNotifierProvider.autoDispose<StockInManualNotifier, AsyncValue<void>>((
|
|
ref,
|
|
) {
|
|
final repository = ref.watch(stockRepositoryProvider);
|
|
return StockInManualNotifier(repository);
|
|
});
|
|
|
|
final pageNotifierProvider =
|
|
StateNotifierProvider.autoDispose<PageRepositoryNotifier, AsyncValue<void>>(
|
|
(ref) {
|
|
final repository = ref.watch(pageRepositoryProvider);
|
|
return PageRepositoryNotifier(repository);
|
|
},
|
|
);
|
|
|
|
final stockOutEmptyNotifierProvider =
|
|
StateNotifierProvider.autoDispose<StockOutEmptyNotifier, AsyncValue<void>>((
|
|
ref,
|
|
) {
|
|
final repository = ref.watch(stockRepositoryProvider);
|
|
return StockOutEmptyNotifier(repository);
|
|
});
|