|
- import 'package:farm_tpf/custom_model/Supply.dart';
- import 'package:farm_tpf/data/repository/repository.dart';
- import 'package:farm_tpf/presentation/custom_widgets/bottom_loader.dart';
- import 'package:farm_tpf/presentation/custom_widgets/loading_list_page.dart';
- import 'package:farm_tpf/presentation/screens/resources/bloc/supply_bloc.dart';
- import 'package:farm_tpf/presentation/screens/resources/widget_search.dart';
- import 'package:farm_tpf/utils/const_string.dart';
- import 'package:flutter/material.dart';
- import 'package:flutter_bloc/flutter_bloc.dart';
- import 'package:get/get.dart';
- import 'package:farm_tpf/utils/formatter.dart';
-
- class ResourceHelperScreen extends StatefulWidget {
- final String type;
- final int selectedId;
- final String titleName;
- ResourceHelperScreen(
- {@required this.type,
- @required this.selectedId,
- @required this.titleName});
- @override
- _ResourceHelperScreenState createState() => _ResourceHelperScreenState();
- }
-
- class _ResourceHelperScreenState extends State<ResourceHelperScreen> {
- @override
- Widget build(BuildContext context) {
- return BlocProvider(
- create: (context) => SupplyBloc(repository: Repository())
- ..add(DataFetched(type: widget.type, selectedId: widget.selectedId)),
- child: HoldInfinityWidget(
- selectedId: widget.selectedId,
- type: widget.type,
- titleName: widget.titleName,
- ),
- );
- }
- }
-
- class HoldInfinityWidget extends StatelessWidget {
- final int selectedId;
- final String type;
- final String titleName;
- HoldInfinityWidget(
- {@required this.selectedId,
- @required this.type,
- @required this.titleName});
- final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- key: _scaffoldKey,
- appBar: AppBar(title: Text("Chọn $titleName")),
- body: Column(
- children: <Widget>[
- WidgetSearch(
- type: type,
- selectedId: selectedId,
- ),
- Expanded(
- child: InfinityView(
- selectedId: selectedId,
- type: type,
- ))
- ],
- ));
- }
- }
-
- class InfinityView extends StatefulWidget {
- final int selectedId;
- final String type;
- InfinityView({@required this.selectedId, @required this.type});
- @override
- _InfinityViewState createState() => _InfinityViewState();
- }
-
- class _InfinityViewState extends State<InfinityView> {
- SupplyBloc _supplyBloc;
-
- @override
- void initState() {
- _supplyBloc = BlocProvider.of<SupplyBloc>(context);
- _supplyBloc
- .add(DataFetched(type: widget.type, selectedId: widget.selectedId));
- super.initState();
- }
-
- @override
- Widget build(BuildContext context) {
- return BlocBuilder<SupplyBloc, SupplyState>(
- builder: (context, state) {
- if (state is SupplyFailure) {
- return Center(child: Text(label_error_get_data));
- }
- if (state is SupplySuccess) {
- if (state.items.isEmpty) {
- return Center(child: Text(label_list_empty));
- }
- return RefreshIndicator(
- child: ListView.builder(
- itemBuilder: (BuildContext context, int index) {
- return index >= state.items.length
- ? BottomLoader()
- : ItemInfinityWidget(item: state.items[index]);
- },
- itemCount: state.items.length),
- onRefresh: () async {
- _supplyBloc.add(OnRefresh(
- type: widget.type, selectedId: widget.selectedId));
- });
- }
- return Center(
- child: LoadingListPage(),
- );
- },
- );
- }
-
- @override
- void dispose() {
- super.dispose();
- }
- }
-
- class ItemInfinityWidget extends StatelessWidget {
- final Supply item;
-
- const ItemInfinityWidget({Key key, @required this.item}) : super(key: key);
-
- @override
- Widget build(BuildContext context) {
- return GestureDetector(
- child: Card(
- child: Material(
- child: RadioListTile(
- title: Row(
- children: [
- Expanded(child: Text(item.tbSuppliesName.toString())),
- Text(
- "${item.quantity.formatNumtoStringDecimal()} ${item.unit}")
- ],
- ),
- subtitle: Text(item.tbWarehouseName.toString()),
- value: item,
- groupValue: item.isSelected == false ? null : item,
- onChanged: (Supply value) {
- if (value.quantity <= 0) {
- Get.snackbar("Vật tư đã hết", "Vui lòng chọn vật tư khác",
- snackPosition: SnackPosition.BOTTOM);
- } else {
- //close nackbar if open
- if (Get.isSnackbarOpen) Get.back();
- Navigator.of(context).pop(value);
- }
- }),
- )),
- onTap: () {});
- }
- }
|