diff --git a/lib/screens/common_widgets/env_trigger_field.dart b/lib/screens/common_widgets/env_trigger_field.dart index 23f01d1b..bccaf048 100644 --- a/lib/screens/common_widgets/env_trigger_field.dart +++ b/lib/screens/common_widgets/env_trigger_field.dart @@ -51,7 +51,8 @@ class EnvironmentTriggerFieldState extends State { @override void didUpdateWidget(EnvironmentTriggerField oldWidget) { super.didUpdateWidget(oldWidget); - if (oldWidget.initialValue != widget.initialValue) { + if ((oldWidget.keyId != widget.keyId) || + (oldWidget.initialValue != widget.initialValue)) { controller.text = widget.initialValue ?? ""; controller.selection = TextSelection.collapsed(offset: controller.text.length); diff --git a/test/screens/common_widgets/env_trigger_field_test.dart b/test/screens/common_widgets/env_trigger_field_test.dart index 622f10ac..c4ec063e 100644 --- a/test/screens/common_widgets/env_trigger_field_test.dart +++ b/test/screens/common_widgets/env_trigger_field_test.dart @@ -45,4 +45,46 @@ void main() { expect(fieldKey.currentState!.controller.text, updatedValue); }); + + testWidgets( + 'Testing EnvironmentTriggerField with empty initialValue clears the controller text', + (WidgetTester tester) async { + final fieldKey = GlobalKey(); + const initialValue = 'initial'; + const emptyValue = ''; + + await tester.pumpWidget( + Portal( + child: MaterialApp( + home: Scaffold( + body: EnvironmentTriggerField( + key: fieldKey, + keyId: 'testKey', + initialValue: initialValue, + ), + ), + ), + ), + ); + + Finder field = find.byType(ExtendedTextField); + expect(field, findsOneWidget); + expect(fieldKey.currentState!.controller.text, initialValue); + + await tester.pumpWidget( + Portal( + child: MaterialApp( + home: Scaffold( + body: EnvironmentTriggerField( + key: fieldKey, + keyId: 'testKey', + initialValue: emptyValue, + ), + ), + ), + ), + ); + + expect(fieldKey.currentState!.controller.text, emptyValue); + }); }