import 'package:flutter/material.dart'; import 'package:seshat/domain/models/bal.dart'; import 'package:seshat/ui/bal_page/view_model/bal_view_model.dart'; import 'package:seshat/ui/bal_page/widget/ended/bal_ended_screen.dart'; import 'package:seshat/ui/bal_page/widget/ongoing/bal_ongoing_screen.dart'; import 'package:seshat/ui/bal_page/widget/pending/bal_pending_screen.dart'; import 'package:seshat/ui/core/ui/navigation_bar.dart'; import 'package:seshat/ui/core/ui/await_loading.dart'; class BalPage extends StatefulWidget { const BalPage({super.key, required this.viewModel}); final BalViewModel viewModel; @override State createState() => _BalPageState(); } class _BalPageState extends State { @override Widget build(BuildContext context) { return ListenableBuilder( listenable: widget.viewModel, builder: (context, child) { return switch (widget.viewModel.isLoaded) { false => Scaffold( bottomNavigationBar: AppNavigationBar(startIndex: 0), body: AwaitLoading(), ), true => switch (widget.viewModel.bal == null) { true => Scaffold( bottomNavigationBar: AppNavigationBar(startIndex: 0), body: Center( child: Text("La BAL référencée n'est pas accessible"), ), ), false => switch (widget.viewModel.bal!.state) { BalState.pending => BalPendingScreen(viewModel: widget.viewModel), BalState.ongoing => BalOngoingScreen(viewModel: widget.viewModel), BalState.ended => BalEndedScreen(viewModel: widget.viewModel), }, }, }; }, ); } }