| @@ -361,7 +361,7 @@ | |||
| ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | |||
| CLANG_ENABLE_MODULES = YES; | |||
| CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | |||
| CURRENT_PROJECT_VERSION = 6; | |||
| CURRENT_PROJECT_VERSION = 7; | |||
| DEVELOPMENT_TEAM = C3DTD2JH94; | |||
| ENABLE_BITCODE = NO; | |||
| FRAMEWORK_SEARCH_PATHS = ( | |||
| @@ -377,7 +377,7 @@ | |||
| "$(inherited)", | |||
| "$(PROJECT_DIR)/Flutter", | |||
| ); | |||
| MARKETING_VERSION = 1.0.3; | |||
| MARKETING_VERSION = 1.0.4; | |||
| PRODUCT_BUNDLE_IDENTIFIER = vn.azteam.farmdemo; | |||
| PRODUCT_NAME = "$(TARGET_NAME)"; | |||
| SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; | |||
| @@ -500,7 +500,7 @@ | |||
| ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | |||
| CLANG_ENABLE_MODULES = YES; | |||
| CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | |||
| CURRENT_PROJECT_VERSION = 6; | |||
| CURRENT_PROJECT_VERSION = 7; | |||
| DEVELOPMENT_TEAM = C3DTD2JH94; | |||
| ENABLE_BITCODE = NO; | |||
| FRAMEWORK_SEARCH_PATHS = ( | |||
| @@ -516,7 +516,7 @@ | |||
| "$(inherited)", | |||
| "$(PROJECT_DIR)/Flutter", | |||
| ); | |||
| MARKETING_VERSION = 1.0.3; | |||
| MARKETING_VERSION = 1.0.4; | |||
| PRODUCT_BUNDLE_IDENTIFIER = vn.azteam.farmdemo; | |||
| PRODUCT_NAME = "$(TARGET_NAME)"; | |||
| SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; | |||
| @@ -533,7 +533,7 @@ | |||
| ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | |||
| CLANG_ENABLE_MODULES = YES; | |||
| CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | |||
| CURRENT_PROJECT_VERSION = 6; | |||
| CURRENT_PROJECT_VERSION = 7; | |||
| DEVELOPMENT_TEAM = C3DTD2JH94; | |||
| ENABLE_BITCODE = NO; | |||
| FRAMEWORK_SEARCH_PATHS = ( | |||
| @@ -549,7 +549,7 @@ | |||
| "$(inherited)", | |||
| "$(PROJECT_DIR)/Flutter", | |||
| ); | |||
| MARKETING_VERSION = 1.0.3; | |||
| MARKETING_VERSION = 1.0.4; | |||
| PRODUCT_BUNDLE_IDENTIFIER = vn.azteam.farmdemo; | |||
| PRODUCT_NAME = "$(TARGET_NAME)"; | |||
| SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; | |||
| @@ -0,0 +1,82 @@ | |||
| import 'package:farm_tpf/custom_model/action_form/CommonData.dart'; | |||
| import 'package:farm_tpf/data/repository/repository.dart'; | |||
| import 'package:farm_tpf/presentation/screens/actions/state_management_helper/change_dropdown_controller.dart'; | |||
| import 'package:farm_tpf/presentation/screens/resources/bloc/bloc/common_data_bloc.dart'; | |||
| import 'package:flutter/material.dart'; | |||
| import 'package:flutter_bloc/flutter_bloc.dart'; | |||
| import 'package:get/get.dart'; | |||
| import 'package:group_radio_button/group_radio_button.dart'; | |||
| class RadioButtonWidget extends StatefulWidget { | |||
| final String condition; | |||
| final String supply; | |||
| final String tag; | |||
| final Function(CommonData) onPressed; | |||
| RadioButtonWidget( | |||
| {@required this.condition, | |||
| @required this.supply, | |||
| @required this.onPressed, | |||
| @required this.tag}); | |||
| @override | |||
| _RadioButtonWidgetState createState() => _RadioButtonWidgetState(); | |||
| } | |||
| class _RadioButtonWidgetState extends State<RadioButtonWidget> { | |||
| var selectedItem = CommonData(); | |||
| CommonDataBloc _commonDataBloc; | |||
| ChangeDropdownController controller; | |||
| @override | |||
| void initState() { | |||
| super.initState(); | |||
| controller = Get.put(ChangeDropdownController(), tag: widget.tag); | |||
| } | |||
| @override | |||
| Widget build(BuildContext context) { | |||
| return GetBuilder<ChangeDropdownController>( | |||
| tag: widget.tag, | |||
| builder: (data) { | |||
| return BlocProvider( | |||
| create: (context) => CommonDataBloc(repository: Repository()) | |||
| ..add(DataFetched( | |||
| tbSupply: widget.supply, condition: widget.condition)), | |||
| child: BlocBuilder<CommonDataBloc, CommonDataState>( | |||
| cubit: _commonDataBloc, | |||
| builder: (contextb, state) { | |||
| if (state is CommonDataFailure) { | |||
| return Center(child: Text('')); | |||
| } | |||
| if (state is CommonDataSuccess) { | |||
| if (state.items.isEmpty) { | |||
| return Center(child: Text('')); | |||
| } | |||
| List<CommonData> listItem = state.items; | |||
| if (data?.currentData?.id != null) { | |||
| listItem.forEach((element) { | |||
| if (element.id == data.currentData.id) { | |||
| selectedItem = element; | |||
| } | |||
| }); | |||
| } | |||
| return RadioGroup<CommonData>.builder( | |||
| groupValue: selectedItem, | |||
| onChanged: (value) { | |||
| setState(() { | |||
| selectedItem = value; | |||
| widget.onPressed(value); | |||
| }); | |||
| }, | |||
| items: state.items, | |||
| itemBuilder: (item) => RadioButtonBuilder(item.name), | |||
| ); | |||
| } | |||
| return Center(child: CircularProgressIndicator()); | |||
| }, | |||
| ), | |||
| ); | |||
| }); | |||
| } | |||
| } | |||
| @@ -16,6 +16,7 @@ import 'package:farm_tpf/presentation/custom_widgets/widget_action_field_date.da | |||
| import 'package:farm_tpf/presentation/custom_widgets/widget_field_time_picker.dart'; | |||
| import 'package:farm_tpf/presentation/custom_widgets/widget_loading.dart'; | |||
| import 'package:farm_tpf/presentation/custom_widgets/widget_media_picker.dart'; | |||
| import 'package:farm_tpf/presentation/custom_widgets/widget_radio_button.dart'; | |||
| import 'package:farm_tpf/presentation/custom_widgets/widget_text_field_area.dart'; | |||
| import 'package:farm_tpf/presentation/custom_widgets/widget_text_form_field.dart'; | |||
| import 'package:farm_tpf/presentation/custom_widgets/widget_utils.dart'; | |||
| @@ -369,8 +370,7 @@ class _ActionScreenState extends State<ActionScreen> { | |||
| ), | |||
| ], | |||
| ); | |||
| } else if (field.tbControlTypeName == 'dropdown' || | |||
| field.tbControlTypeName == 'radiobutton') { | |||
| } else if (field.tbControlTypeName == 'dropdown') { | |||
| return Column( | |||
| children: [ | |||
| groupName(field.groupName), | |||
| @@ -389,6 +389,21 @@ class _ActionScreenState extends State<ActionScreen> { | |||
| }), | |||
| ], | |||
| ); | |||
| } else if (field.tbControlTypeName == 'radiobutton') { | |||
| return Column( | |||
| children: [ | |||
| groupName(field.groupName), | |||
| RadioButtonWidget( | |||
| tag: field.name, | |||
| condition: field.tbActivityExtendTypeCondition, | |||
| supply: field.tbActivityExtendTypeExternalTable ?? '', | |||
| onPressed: (commonData) { | |||
| valueObjects[field.id.toString()] = | |||
| commonData.id.toString(); | |||
| }, | |||
| ), | |||
| ], | |||
| ); | |||
| } else if (field.tbControlTypeName == 'date') { | |||
| return Column( | |||
| children: [ | |||
| @@ -529,7 +544,9 @@ class _ActionScreenState extends State<ActionScreen> { | |||
| } else { | |||
| SchedulerBinding.instance.addPostFrameCallback((_) { | |||
| if (element.tbObjectParameterDTO?.tbControlTypeName == 'dropdown' || | |||
| element.tbObjectParameterDTO?.tbControlTypeName == 'radio') { | |||
| element.tbObjectParameterDTO?.tbControlTypeName | |||
| ?.toLowerCase() == | |||
| 'radiobutton') { | |||
| var dropdownValueName = ''; | |||
| if (element.tbObjectParameterDTO | |||
| ?.tbActivityExtendTypeDropDownDTOList?.isNotEmpty || | |||
| @@ -408,6 +408,13 @@ packages: | |||
| url: "https://pub.dartlang.org" | |||
| source: hosted | |||
| version: "0.2.0" | |||
| group_radio_button: | |||
| dependency: "direct main" | |||
| description: | |||
| name: group_radio_button | |||
| url: "https://pub.dartlang.org" | |||
| source: hosted | |||
| version: "1.0.1" | |||
| http: | |||
| dependency: "direct main" | |||
| description: | |||
| @@ -42,6 +42,7 @@ dependencies: | |||
| badges: ^1.1.1 | |||
| cached_network_image: ^2.3.2+1 | |||
| auto_size_text: ^2.1.0 | |||
| group_radio_button: ^1.0.1 | |||
| camera: ^0.5.8+5 | |||
| path_provider: ^1.6.14 | |||