import 'package:farm_tpf/custom_model/CropPlot.dart'; import 'package:farm_tpf/data/repository/repository.dart'; import 'package:farm_tpf/presentation/custom_widgets/app_bar_widget.dart'; import 'package:farm_tpf/presentation/custom_widgets/widget_loading.dart'; import 'package:farm_tpf/presentation/screens/plot_detail/bloc/plot_detail_bloc.dart'; import 'package:farm_tpf/presentation/screens/plot_detail/widget_tab.dart'; import 'package:farm_tpf/utils/const_assets.dart'; import 'package:farm_tpf/utils/formatter.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; class PlotDetailScreen extends StatefulWidget { int cropId; String cropCode; int cropType; int initialIndex; PlotDetailScreen({ this.cropId, this.initialIndex = 0, this.cropCode, @required this.cropType, }); @override _PlotDetailScreenState createState() => _PlotDetailScreenState(); } class _PlotDetailScreenState extends State { Widget content({String suppliesName, String code, num areaM2}) { return Column( children: [ Container( padding: EdgeInsets.all(8), width: double.infinity, color: Colors.white, child: Row( children: [ SizedBox( width: 12, ), Expanded( child: Container( height: 75, child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ Text('${suppliesName ?? ''}', style: TextStyle( fontWeight: FontWeight.bold, fontSize: 18)), Expanded( child: SizedBox(), ), Text( 'Mã lô: ${code ?? ''}', style: TextStyle(color: Colors.grey), overflow: TextOverflow.clip, ), Text( 'Diện tích: ${areaM2.formatNumtoStringDecimal() ?? '0'} m\u00B2', style: TextStyle(color: Colors.grey)) ], ), ), ), Image.asset( AppAssets.tempImage, width: 75, height: 75, ) ], ), ), Expanded( child: HomeTabbarWidget( cropType: widget.cropType, cropId: widget.cropId, cropCode: widget.cropCode, initialIndex: widget.initialIndex, )) ], ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBarWidget(), body: BlocProvider( create: (context) => PlotDetailBloc(repository: Repository()) ..add(CheckInfo(cropId: widget.cropId, cropCode: widget.cropCode)), child: BlocConsumer( listener: (context, state) { if (state is PlotDetailLoading) { LoadingDialog.showLoadingDialog(context); } else if (state is PlotDetailFailure) { LoadingDialog.hideLoadingDialog(context); } else { LoadingDialog.hideLoadingDialog(context); } }, builder: (context, state) { if (state is PlotDetailSuccess) { var cropPlot = state.ownerItem as CropPlot; return content( suppliesName: cropPlot.tbCropDTO.suppliesName, code: cropPlot.tbCropDTO.code, areaM2: cropPlot.tbCropDTO.areaM2); } else { return content(suppliesName: '', code: '', areaM2: 0); } }), )); } }