showIconPicker function
Future<IconData?>
showIconPicker({
- required AppModel app,
- required BuildContext context,
- IconData? defaultIcon,
Implementation
Future<IconData?> showIconPicker(
{required AppModel app,
required BuildContext context,
IconData? defaultIcon}) async {
var selectedIcon = defaultIcon;
await showDialog(
context: context,
builder: (_) => AlertDialog(
title: h3(app, context, 'Pick an Icon'),
content: Container(
width: 320,
height: 400,
alignment: Alignment.center,
child: GridView.builder(
gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: 120,
childAspectRatio: 1 / 1,
crossAxisSpacing: 10,
mainAxisSpacing: 10),
itemCount: allIcons.length,
itemBuilder: (_, index) => Container(
width: 200,
height: 200,
child: ListView(
shrinkWrap: true,
physics: ScrollPhysics(),
children: [
Center(
child: IconButton(
color: selectedIcon == allIcons[index].iconData
? Colors.blue
: Colors.green,
iconSize: 30,
icon: Icon(
allIcons[index].iconData,
),
onPressed: () {
selectedIcon = allIcons[index].iconData;
Navigator.of(context).pop();
},
)),
Center(
child:
smallText(app, context, allIcons[index].name)),
],
)),
),
),
actions: [
button(app, context, label: 'Close', onPressed: () {
Navigator.of(context).pop();
}),
],
));
return selectedIcon;
}