import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../../controllers/localization/localization.dart'; import '../../../controllers/providers/api/departments_provider.dart'; import '../../../controllers/providers/settings/setting_provider.dart'; import '../../../models/department.dart'; import '../../../models/subtitle.dart'; import '../app_text_form_field.dart'; import '../loaders/loading_manager.dart'; import '../loaders/no_item_found.dart'; import 'department_item.dart'; class SingleDepartmentPicker extends StatefulWidget { static final String id = "/single-Department-Picker"; @override _SingleDepartmentPickerState createState() => _SingleDepartmentPickerState(); } class _SingleDepartmentPickerState extends State { DepartmentsProvider? _departmentsProvider; SettingProvider? _settingProvider; List _searchableList = []; bool _firstTime = true; @override Widget build(BuildContext context) { _departmentsProvider = Provider.of(context); _settingProvider = Provider.of(context); Subtitle? _subtitle = AppLocalization.of(context)?.subtitle; if(_firstTime && _departmentsProvider?.departments != null){ _searchableList.addAll(_departmentsProvider?.departments??[]); _firstTime = false; } return Scaffold( resizeToAvoidBottomInset: false, body: LoadingManager( isLoading: _departmentsProvider?.isLoading, stateCode: _departmentsProvider?.stateCode, isFailedLoading: _departmentsProvider?.departments == null, onRefresh: () async { _departmentsProvider?.reset(); await _departmentsProvider?.getDepartment( _settingProvider?.host??"", ); }, child: Column( children: [ SizedBox(height: 48,), Padding( padding: const EdgeInsets.symmetric(vertical: 8,horizontal: 16), child: ATextFormField( hintText: _subtitle?.searchByName??"", style: Theme.of(context).textTheme.headline6, suffixIcon: Icon(Icons.search_rounded), onChange: (value){ _searchableList.clear(); _searchableList.addAll(_departmentsProvider!.departments!.where( (element) => element.name!.toLowerCase().contains(value.toLowerCase()) ).toList()); setState(() {}); }, ), ), Expanded( child: _searchableList.isEmpty ? NoItemFound(message: _subtitle?.noUniteFound??"",): ListView.builder( padding: EdgeInsets.zero, shrinkWrap: true, itemCount: _searchableList.length, itemBuilder: (listContext,itemIndex){ return DepartmentItem( department: _searchableList[itemIndex], onPressed: (hospital){ Navigator.of(context).pop(hospital); }, ); }, ), ), ], ), ), ); } }