Files
Kifi/kifi-app/lib/features/business/providers/indian_states_provider.dart

36 lines
1.1 KiB
Dart

import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../../core/network/dio_client.dart';
import '../domain/indian_state.dart';
class IndianStatesNotifier extends AsyncNotifier<List<IndianState>> {
@override
Future<List<IndianState>> build() async {
return _fetchStates();
}
Future<List<IndianState>> _fetchStates() async {
final response = await DioClient().dio
.get('/master/states')
.timeout(
const Duration(seconds: 5),
onTimeout: () => throw Exception('Connection timed out'),
);
if (response.data == null || response.data.toString().isEmpty) {
return [];
}
final list = (response.data as List).map((e) => IndianState.fromJson(e)).toList();
final Map<String, IndianState> uniqueStates = {};
for (var state in list) {
uniqueStates[state.gstCode] = state;
}
final result = uniqueStates.values.toList();
result.sort((a, b) => a.name.compareTo(b.name));
return result;
}
}
final indianStatesProvider =
AsyncNotifierProvider<IndianStatesNotifier, List<IndianState>>(() {
return IndianStatesNotifier();
});