feat(App): update Finlytic Flutter app UI and blocs

This commit is contained in:
2026-08-09 21:01:46 +02:00
parent e7427b7464
commit a708d2977c
591 changed files with 1095105 additions and 0 deletions
@@ -0,0 +1,47 @@
import 'dart:async';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:finlytic_app/features/trades/repositories/trade_repository.dart';
import 'trade_event.dart';
import 'trade_state.dart';
class TradeBloc extends Bloc<TradeEvent, TradeState> {
final TradeRepository repository;
TradeBloc({required this.repository}) : super(TradeInitial()) {
on<FetchTrades>(_onFetchTrades);
on<CloseTrade>(_onCloseTrade);
on<AcceptTradeProposalEvent>(_onAcceptTradeProposal);
}
Future<void> _onFetchTrades(FetchTrades event, Emitter<TradeState> emit) async {
emit(TradeLoading());
try {
final trades = await repository.fetchTrades(isin: event.isin, status: event.status);
emit(TradeLoaded(trades));
} catch (e) {
emit(const TradeError("Trades konnten nicht geladen werden"));
}
}
Future<void> _onCloseTrade(CloseTrade event, Emitter<TradeState> emit) async {
emit(TradeLoading());
try {
await repository.closeTrade(event.tradeId);
final trades = await repository.fetchTrades();
emit(TradeLoaded(trades));
} catch (e) {
emit(const TradeError("Position konnte nicht geschlossen werden"));
}
}
Future<void> _onAcceptTradeProposal(AcceptTradeProposalEvent event, Emitter<TradeState> emit) async {
emit(TradeLoading());
try {
await repository.acceptTrade(event.dto);
final trades = await repository.fetchTrades();
emit(TradeLoaded(trades));
} catch (e) {
emit(const TradeError("Trade konnte nicht akzeptiert werden"));
}
}
}
@@ -0,0 +1,37 @@
import 'package:equatable/equatable.dart';
import '../models/trade_acceptance_dto.dart';
abstract class TradeEvent extends Equatable {
const TradeEvent();
@override
List<Object?> get props => [];
}
class FetchTrades extends TradeEvent {
final String? status;
final String? isin;
const FetchTrades({this.status, this.isin});
@override
List<Object?> get props => [status, isin];
}
class CloseTrade extends TradeEvent {
final String tradeId;
const CloseTrade(this.tradeId);
@override
List<Object?> get props => [tradeId];
}
class AcceptTradeProposalEvent extends TradeEvent {
final TradeAcceptanceDto dto;
const AcceptTradeProposalEvent(this.dto);
@override
List<Object?> get props => [dto];
}
@@ -0,0 +1,31 @@
import 'package:equatable/equatable.dart';
import 'package:finlytic_app/features/trades/models/trade_model.dart';
abstract class TradeState extends Equatable {
const TradeState();
@override
List<Object?> get props => [];
}
class TradeInitial extends TradeState {}
class TradeLoading extends TradeState {}
class TradeLoaded extends TradeState {
final List<TradeModel> trades;
const TradeLoaded(this.trades);
@override
List<Object?> get props => [trades];
}
class TradeError extends TradeState {
final String message;
const TradeError(this.message);
@override
List<Object?> get props => [message];
}