import 'package:flutter/material.dart'; import 'package:pilipala/models/common/theme_type.dart'; class SelectDialog extends StatefulWidget { final T value; final String title; final List values; const SelectDialog({super.key, required this.value, required this.values, required this.title}); @override _SelectDialogState createState() => _SelectDialogState(); } class _SelectDialogState extends State> { late T _tempValue; @override void initState() { super.initState(); _tempValue = widget.value; } @override Widget build(BuildContext context) { TextStyle titleStyle = Theme.of(context).textTheme.titleMedium!; return AlertDialog( title: Text(widget.title), contentPadding: const EdgeInsets.fromLTRB(0, 12, 0, 12), content: StatefulBuilder( builder: (context, StateSetter setState) { return SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.min, children: [ for (var i in widget.values) ...[ RadioListTile( value: i['value'], title: Text(i['title'], style: titleStyle), groupValue: _tempValue, onChanged: (value) { print(value); setState(() { _tempValue = value as T; }); }, ), ] ], ), ); }), actions: [ TextButton( onPressed: () => Navigator.pop(context), child: Text( '取消', style: TextStyle( color: Theme.of(context).colorScheme.outline), )), TextButton( onPressed: () => Navigator.pop(context, _tempValue), child: const Text('确定')) ], ); } }