Files
fcs/lib/pages/widgets/local_dropdown.dart

84 lines
2.5 KiB
Dart
Raw Normal View History

2020-10-13 07:50:25 +06:30
import 'package:fcs/helpers/theme.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'local_text.dart';
class LocalDropdown<T> extends StatelessWidget {
final Function(T) callback;
final IconData iconData;
final T selectedValue;
final List<T> values;
2020-10-19 05:13:49 +06:30
final Function(T) display;
final String labelKey;
2020-10-13 07:50:25 +06:30
const LocalDropdown(
2020-10-19 05:13:49 +06:30
{Key key,
this.callback,
this.iconData,
this.selectedValue,
this.values,
this.labelKey,
this.display})
2020-10-13 07:50:25 +06:30
: super(key: key);
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.only(left: 5.0, right: 0),
child: Row(
children: [
Padding(
padding: const EdgeInsets.only(left: 0, right: 10),
child: Icon(iconData, color: primaryColor),
),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(right: 18.0),
child: LocalText(
context,
2020-10-19 05:13:49 +06:30
labelKey,
2020-10-13 07:50:25 +06:30
color: Colors.black54,
fontSize: 16,
),
),
DropdownButton<T>(
isDense: true,
value: selectedValue,
style: TextStyle(color: Colors.black, fontSize: 14),
underline: Container(
height: 1,
color: Colors.grey,
),
onChanged: (T newValue) {
callback(newValue);
},
isExpanded: true,
2020-10-19 05:13:49 +06:30
items: values == null
? []
: values.map<DropdownMenuItem<T>>((T value) {
return DropdownMenuItem<T>(
value: value,
child: Text(
value == null
? ""
: display != null
? display(value)
: value.toString(),
overflow: TextOverflow.ellipsis,
style: TextStyle(color: primaryColor)),
);
}).toList(),
2020-10-13 07:50:25 +06:30
),
],
),
),
],
),
);
}
}