feat(App): update Finlytic Flutter app UI and blocs
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'asset_header_event.dart';
|
||||
import 'asset_header_state.dart';
|
||||
import '../../repositories/asset_repository.dart';
|
||||
|
||||
class AssetHeaderBloc extends Bloc<AssetHeaderEvent, AssetHeaderState> {
|
||||
final AssetRepository repository;
|
||||
AssetHeaderBloc({required this.repository}) : super(AssetHeaderInitial()) {
|
||||
on<LoadAssetHeader>((event, emit) async {
|
||||
final prevData = state is AssetHeaderLoaded ? (state as AssetHeaderLoaded).data : (state is AssetHeaderLoading ? (state as AssetHeaderLoading).previousData : null);
|
||||
emit(AssetHeaderLoading(previousData: prevData));
|
||||
try {
|
||||
final data = await repository.getAssetHeader(event.isin, exchange: event.exchange, ticker: event.ticker);
|
||||
emit(AssetHeaderLoaded(data));
|
||||
} catch (e) {
|
||||
emit(AssetHeaderError(e.toString()));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
abstract class AssetHeaderEvent {}
|
||||
class LoadAssetHeader extends AssetHeaderEvent {
|
||||
final String isin;
|
||||
final bool forceRefresh;
|
||||
final String? exchange;
|
||||
final String? ticker;
|
||||
LoadAssetHeader(this.isin, {this.forceRefresh = false, this.exchange, this.ticker});
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
import '../../models/asset_model.dart';
|
||||
|
||||
abstract class AssetHeaderState {}
|
||||
class AssetHeaderInitial extends AssetHeaderState {}
|
||||
class AssetHeaderLoading extends AssetHeaderState {
|
||||
final AssetModel? previousData;
|
||||
AssetHeaderLoading({this.previousData});
|
||||
}
|
||||
class AssetHeaderLoaded extends AssetHeaderState {
|
||||
final AssetModel? data;
|
||||
AssetHeaderLoaded(this.data);
|
||||
}
|
||||
class AssetHeaderError extends AssetHeaderState {
|
||||
final String message;
|
||||
AssetHeaderError(this.message);
|
||||
}
|
||||
Reference in New Issue
Block a user