69 lines
2.0 KiB
Dart
69 lines
2.0 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import '../../../core/network/api_client.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 '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 MultiBlocProvider(
|
|
providers: [
|
|
BlocProvider(
|
|
create: (context) => AssetFundamentalsBloc(repository: repository)
|
|
..add(LoadAssetFundamentals(isin, ticker: symbol)),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => AssetTechnicalBloc(repository: repository)
|
|
..add(LoadAssetTechnical(isin, ticker: symbol)),
|
|
),
|
|
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: symbol,
|
|
);
|
|
}
|
|
return AssetPageMobileLayout(
|
|
isin: isin,
|
|
name: name,
|
|
selectedTicker: symbol,
|
|
);
|
|
},
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|
|
|