Merge pull request #253 from opxdelwin/issue-252-updated

[feat] Implement Press Enter to Send Request in URL Input Field
This commit is contained in:
Ankit Mahato
2024-03-09 10:30:35 +05:30
committed by GitHub
3 changed files with 45 additions and 0 deletions

View File

@ -81,6 +81,11 @@ class URLTextField extends ConsumerWidget {
.read(collectionStateNotifierProvider.notifier) .read(collectionStateNotifierProvider.notifier)
.update(selectedId, url: value); .update(selectedId, url: value);
}, },
onFieldSubmitted: (value) {
ref
.read(collectionStateNotifierProvider.notifier)
.sendRequest(selectedId);
},
); );
} }
} }

View File

@ -7,11 +7,13 @@ class URLField extends StatelessWidget {
required this.selectedId, required this.selectedId,
this.initialValue, this.initialValue,
this.onChanged, this.onChanged,
this.onFieldSubmitted,
}); });
final String selectedId; final String selectedId;
final String? initialValue; final String? initialValue;
final void Function(String)? onChanged; final void Function(String)? onChanged;
final void Function(String)? onFieldSubmitted;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -29,6 +31,7 @@ class URLField extends StatelessWidget {
border: InputBorder.none, border: InputBorder.none,
), ),
onChanged: onChanged, onChanged: onChanged,
onFieldSubmitted: onFieldSubmitted,
); );
} }
} }

View File

@ -57,4 +57,41 @@ void main() {
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text('entering 123 for cell field'), findsOneWidget); expect(find.text('entering 123 for cell field'), findsOneWidget);
}); });
testWidgets('URL Field sends request on enter keystroke', (tester) async {
bool wasSubmitCalled = false;
void testSubmit(String val) {
wasSubmitCalled = true;
}
await tester.pumpWidget(
MaterialApp(
title: 'URL Field',
theme: kThemeDataDark,
home: Scaffold(
body: Column(children: [
URLField(
selectedId: '2',
onFieldSubmitted: testSubmit,
)
]),
),
),
);
// ensure URLField is blank
expect(find.byType(TextFormField), findsOneWidget);
expect(find.textContaining('Enter API endpoint '), findsOneWidget);
expect(wasSubmitCalled, false);
// modify value and press enter
var txtForm = find.byKey(const Key("url-2"));
await tester.enterText(txtForm, 'entering 123');
await tester.testTextInput.receiveAction(TextInputAction.done);
await tester.pump();
// check if value was updated
expect(wasSubmitCalled, true);
});
} }