mnemo_cards/lib/admin/enum_param.dart
2024-08-25 00:09:58 +03:00

64 lines
1.6 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
class EnumParam<T extends Enum> extends StatelessWidget {
final String title;
final String? description;
final T initial;
final List<T> values;
final Function(T v) onChanged;
EnumParam(
this.title,
this.values,
this.initial,
this.onChanged, {
this.description,
});
@override
Widget build(BuildContext context) {
T value = initial;
return Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
children: [
Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(title),
if (description != null)
Text(
description!,
style: TextStyle(fontSize: 12),
)
],
),
SizedBox(
width: 2,
),
Expanded(
child: StatefulBuilder(builder: (context, setState) {
return DropdownButton<T>(
value: value,
items: values
.map(
(v) => DropdownMenuItem(
child: Text(v.name),
value: v,
),
)
.toList(),
onChanged: (v) => setState(() {
value = v!;
onChanged(v!);
}),
);
}),
)
],
),
);
}
}