fix: update text controller value when text field value changes (#1637)

pull/1593/head
ggurdin 9 months ago committed by GitHub
parent 4f2475bc5e
commit 3ed92b3411
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1,4 +1,12 @@
import 'package:flutter/material.dart';
import 'package:collection/collection.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:get_storage/get_storage.dart';
import 'package:matrix/matrix.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:fluffychat/config/app_config.dart';
import 'package:fluffychat/pangea/common/config/environment.dart';
import 'package:fluffychat/pangea/common/utils/error_handler.dart';
@ -7,13 +15,6 @@ import 'package:fluffychat/pangea/learning_settings/utils/language_list_util.dar
import 'package:fluffychat/utils/client_manager.dart';
import 'package:fluffychat/utils/platform_infos.dart';
import 'package:fluffychat/widgets/error_widget.dart';
import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:get_storage/get_storage.dart';
import 'package:matrix/matrix.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'config/setting_keys.dart';
import 'utils/background_push.dart';
import 'widgets/fluffy_chat_app.dart';

@ -5,10 +5,23 @@ import 'dart:core';
import 'dart:developer';
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:adaptive_dialog/adaptive_dialog.dart';
import 'package:collection/collection.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:emoji_picker_flutter/emoji_picker_flutter.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:go_router/go_router.dart';
import 'package:image_picker/image_picker.dart';
import 'package:matrix/matrix.dart';
import 'package:scroll_to_index/scroll_to_index.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:universal_html/html.dart' as html;
import 'package:fluffychat/config/app_config.dart';
import 'package:fluffychat/config/setting_keys.dart';
import 'package:fluffychat/config/themes.dart';
@ -43,18 +56,6 @@ import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart';
import 'package:fluffychat/utils/platform_infos.dart';
import 'package:fluffychat/widgets/future_loading_dialog.dart';
import 'package:fluffychat/widgets/matrix.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:go_router/go_router.dart';
import 'package:image_picker/image_picker.dart';
import 'package:matrix/matrix.dart';
import 'package:scroll_to_index/scroll_to_index.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:universal_html/html.dart' as html;
import '../../utils/account_bundles.dart';
import '../../utils/localized_exception_extension.dart';
import 'send_file_dialog.dart';

@ -42,10 +42,6 @@ class ActivityPlannerPageState extends State<ActivityPlannerPage> {
/// Index of the content to display
_PageMode _pageMode = _PageMode.settings;
/// Selected values from the form
String? _selectedTopic;
String? _selectedMode;
String? _selectedObjective;
MediaEnum _selectedMedia = MediaEnum.nan;
String? _selectedLanguageOfInstructions;
String? _selectedTargetLanguage;
@ -120,14 +116,14 @@ class ActivityPlannerPageState extends State<ActivityPlannerPage> {
}
void _randomizeSelections() async {
_selectedTopic = await _randomTopic();
_selectedObjective = await _randomObjective();
_selectedMode = await _randomMode();
final selectedTopic = await _randomTopic();
final selectedObjective = await _randomObjective();
final selectedMode = await _randomMode();
setState(() {
_topicController.text = _selectedTopic!;
_objectiveController.text = _selectedObjective!;
_modeController.text = _selectedMode!;
_topicController.text = selectedTopic;
_objectiveController.text = selectedObjective;
_modeController.text = selectedMode;
});
}
@ -191,9 +187,9 @@ class ActivityPlannerPageState extends State<ActivityPlannerPage> {
activityPlanRequest: _PageMode.savedActivities == _pageMode
? null
: ActivityPlanRequest(
topic: _selectedTopic!,
mode: _selectedMode!,
objective: _selectedObjective!,
topic: _topicController.text,
mode: _modeController.text,
objective: _objectiveController.text,
media: _selectedMedia,
languageOfInstructions: _selectedLanguageOfInstructions!,
targetLanguage: _selectedTargetLanguage!,
@ -223,8 +219,6 @@ class ActivityPlannerPageState extends State<ActivityPlannerPage> {
validator: _validateNotNull,
label: l10n.topicLabel,
placeholder: l10n.topicPlaceholder,
onSelected: (val) => _selectedTopic = val,
initialValue: _selectedTopic,
controller: _topicController,
),
const SizedBox(height: 24),
@ -234,8 +228,6 @@ class ActivityPlannerPageState extends State<ActivityPlannerPage> {
label: l10n.learningObjectiveLabel,
placeholder:
l10n.learningObjectivePlaceholder,
onSelected: (val) => _selectedObjective = val,
initialValue: _selectedObjective,
controller: _objectiveController,
),
const SizedBox(height: 24),
@ -244,8 +236,6 @@ class ActivityPlannerPageState extends State<ActivityPlannerPage> {
validator: _validateNotNull,
label: l10n.modeLabel,
placeholder: l10n.modePlaceholder,
onSelected: (val) => _selectedMode = val,
initialValue: _selectedMode,
controller: _modeController,
),
],

@ -7,8 +7,6 @@ class SuggestionFormField extends StatelessWidget {
final String? Function(String?)? validator;
final String label;
final String placeholder;
final void Function(String) onSelected;
final String? initialValue;
final TextEditingController controller;
const SuggestionFormField({
@ -17,16 +15,13 @@ class SuggestionFormField extends StatelessWidget {
required this.placeholder,
this.validator,
required this.label,
required this.onSelected,
required this.initialValue,
required this.controller,
});
@override
Widget build(BuildContext context) {
return Autocomplete<String>(
initialValue:
initialValue != null ? TextEditingValue(text: initialValue!) : null,
initialValue: TextEditingValue(text: controller.text),
optionsBuilder: (TextEditingValue textEditingValue) async {
return (await suggestions)
.where((ActivitySettingResponseSchema option) {
@ -35,7 +30,7 @@ class SuggestionFormField extends StatelessWidget {
.contains(textEditingValue.text.toLowerCase());
}).map((ActivitySettingResponseSchema e) => e.name);
},
onSelected: onSelected,
onSelected: (val) => controller.text = val,
fieldViewBuilder: (
BuildContext context,
TextEditingController textEditingController,
@ -44,7 +39,7 @@ class SuggestionFormField extends StatelessWidget {
) {
textEditingController.value = controller.value;
textEditingController.addListener(() {
onSelected(textEditingController.text);
controller.value = textEditingController.value;
});
return TextFormField(
controller: textEditingController,

@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:material_symbols_icons/symbols.dart';
const Map<String, List<String>> morphCategoriesAndLabels = {

@ -1,9 +1,11 @@
import 'package:fluffychat/pangea/common/utils/error_handler.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get_storage/get_storage.dart';
import 'package:http/http.dart' as http;
import 'package:fluffychat/pangea/common/utils/error_handler.dart';
class CustomizedSvg extends StatelessWidget {
/// URL of the SVG file
final String svgUrl;

Loading…
Cancel
Save