Files

52 lines
1.3 KiB
Dart

import 'package:equatable/equatable.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../../core/network/api_client.dart';
import '../models/discovery_asset_model.dart';
import '../repositories/discovery_repository.dart';
class DiscoveryState extends Equatable {
final List<DiscoveryAssetModel> assets;
final bool isLoading;
const DiscoveryState({
this.assets = const [],
this.isLoading = false,
});
DiscoveryState copyWith({
List<DiscoveryAssetModel>? assets,
bool? isLoading,
}) {
return DiscoveryState(
assets: assets ?? this.assets,
isLoading: isLoading ?? this.isLoading,
);
}
@override
List<Object?> get props => [assets, isLoading];
}
class DiscoveryCubit extends Cubit<DiscoveryState> {
final DiscoveryRepository repository;
DiscoveryCubit({
DiscoveryRepository? repository,
ApiClient? apiClient,
}) : repository = repository ?? DiscoveryRepository(apiClient: apiClient!),
super(const DiscoveryState());
Future<void> loadDiscovery({int limit = 15}) async {
if (state.isLoading) return;
emit(state.copyWith(isLoading: true));
try {
final list = await repository.getDiscoveryAssets(limit: limit);
emit(DiscoveryState(assets: list, isLoading: false));
} catch (_) {
emit(state.copyWith(isLoading: false));
}
}
}