mirror of
https://github.com/foss42/apidash.git
synced 2025-05-31 06:08:09 +08:00
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:
@ -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);
|
||||||
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user