mirror of
https://github.com/foss42/apidash.git
synced 2025-06-01 14:58:28 +08:00
test: dialog tests
This commit is contained in:
@ -10,44 +10,81 @@ showRenameDialog(
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (context) {
|
||||
final controller = TextEditingController(text: name ?? "");
|
||||
controller.selection =
|
||||
TextSelection(baseOffset: 0, extentOffset: controller.text.length);
|
||||
return AlertDialog(
|
||||
icon: const Icon(Icons.edit_rounded),
|
||||
iconColor: Theme.of(context).colorScheme.primary,
|
||||
title: Text(dialogTitle),
|
||||
titleTextStyle: Theme.of(context).textTheme.titleLarge,
|
||||
content: Container(
|
||||
padding: kPt20,
|
||||
width: 300,
|
||||
child: TextField(
|
||||
autofocus: true,
|
||||
controller: controller,
|
||||
decoration: const InputDecoration(
|
||||
hintText: "Enter new name",
|
||||
border: OutlineInputBorder(
|
||||
borderRadius: kBorderRadius12,
|
||||
)),
|
||||
),
|
||||
),
|
||||
actions: <Widget>[
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
child: const Text('Cancel')),
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
final val = controller.text.trim();
|
||||
onRename(val);
|
||||
Navigator.pop(context);
|
||||
Future.delayed(const Duration(milliseconds: 100), () {
|
||||
controller.dispose();
|
||||
});
|
||||
},
|
||||
child: const Text('Ok')),
|
||||
],
|
||||
return RenameDialogContent(
|
||||
dialogTitle: dialogTitle,
|
||||
onRename: onRename,
|
||||
name: name,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
class RenameDialogContent extends StatefulWidget {
|
||||
const RenameDialogContent({
|
||||
super.key,
|
||||
required this.dialogTitle,
|
||||
required this.onRename,
|
||||
this.name,
|
||||
});
|
||||
|
||||
final String dialogTitle;
|
||||
final Function(String) onRename;
|
||||
final String? name;
|
||||
|
||||
@override
|
||||
State<RenameDialogContent> createState() => _RenameDialogContentState();
|
||||
}
|
||||
|
||||
class _RenameDialogContentState extends State<RenameDialogContent> {
|
||||
late TextEditingController controller;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
controller = TextEditingController(text: widget.name ?? "");
|
||||
controller.selection =
|
||||
TextSelection(baseOffset: 0, extentOffset: controller.text.length);
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
controller.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AlertDialog(
|
||||
icon: const Icon(Icons.edit_rounded),
|
||||
iconColor: Theme.of(context).colorScheme.primary,
|
||||
title: Text(widget.dialogTitle),
|
||||
titleTextStyle: Theme.of(context).textTheme.titleLarge,
|
||||
content: Container(
|
||||
padding: kPt20,
|
||||
width: 300,
|
||||
child: TextField(
|
||||
autofocus: true,
|
||||
controller: controller,
|
||||
decoration: const InputDecoration(
|
||||
hintText: "Enter new name",
|
||||
border: OutlineInputBorder(
|
||||
borderRadius: kBorderRadius12,
|
||||
)),
|
||||
),
|
||||
),
|
||||
actions: <Widget>[
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
child: const Text('Cancel')),
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
final val = controller.text.trim();
|
||||
widget.onRename(val);
|
||||
Navigator.pop(context);
|
||||
},
|
||||
child: const Text('Ok')),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user