import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../core/network/api_client.dart'; import '../../favorites/cubit/favorites_cubit.dart'; import '../bloc/fundamentals/asset_fundamentals_bloc.dart'; import '../bloc/fundamentals/asset_fundamentals_event.dart'; import '../bloc/technical/asset_technical_bloc.dart'; import '../bloc/technical/asset_technical_event.dart'; import '../bloc/trades/asset_trades_bloc.dart'; import '../bloc/trades/asset_trades_event.dart'; import '../repositories/asset_repository.dart'; import '../utils/ticker_resolver.dart'; import 'layouts/asset_page_desktop_layout.dart'; import 'layouts/asset_page_mobile_layout.dart'; class AssetDetailScreen extends StatelessWidget { final String isin; final String? name; final String? symbol; final ApiClient apiClient; const AssetDetailScreen({ super.key, required this.isin, this.symbol, required this.apiClient, required this.name, }); @override Widget build(BuildContext context) { final repository = AssetRepository(apiClient: apiClient); return BlocBuilder( builder: (context, favState) { final initialTicker = TickerResolver.resolve( isin: isin, candidateSymbol: symbol, favoriteDetails: favState.favoriteDetails, ); return MultiBlocProvider( providers: [ BlocProvider( create: (context) => AssetFundamentalsBloc(repository: repository) ..add(LoadAssetFundamentals(isin, ticker: initialTicker)), ), BlocProvider( create: (context) => AssetTechnicalBloc(repository: repository) ..add(LoadAssetTechnical(isin, ticker: initialTicker)), ), BlocProvider( create: (context) => AssetTradesBloc(repository: repository) ..add(LoadAssetTrades(isin)), ), ], child: Scaffold( body: LayoutBuilder( builder: (context, constraints) { if (constraints.maxWidth >= 900) { return AssetPageDesktopLayout( isin: isin, name: name, selectedTicker: initialTicker ?? symbol, ); } return AssetPageMobileLayout( isin: isin, name: name, selectedTicker: initialTicker ?? symbol, ); }, ), ), ); }, ); } }