class TambahMuridState extends State<TambahMurid> {
final _formKey = GlobalKey<FormState>();
var kotas = [‘Jakarta’, ‘Bogor’, ‘Tanggerang’, ‘Bekasi’, ‘Depok’];
String? kotaTerpilih;
final tglLahirFormat = MaskTextInputFormatter(mask: “##/##/####”);
String? jKel = ‘Pria’;
final List<String> opsiJkel = [‘Pria’, ‘Wanita’];
String? namaLengkap;
String? kotaTinggal;
String? tglLahir;
String? alamat;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Form(
key: _formKey,
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 10),
child: Column(
spacing: 12.0,
children: [
TextFormField(
decoration: InputDecoration(labelText: ‘Nama Lengkap’),
validator: (nilai) {
if (nilai == null || nilai.isEmpty) {
return ‘Nama Lengkap harus diisi’;
}
return null;
},
onSaved: (nilai) {
namaLengkap = nilai;
},
),
Row(
children: [
Expanded(
child: DropdownButtonFormField<String>(
initialValue: kotaTerpilih,
decoration: const InputDecoration(
labelText: ‘Tempat Lahir’,
border: InputBorder.none,
),
items: kotas.map((kota) {
return DropdownMenuItem(value: kota, child: Text(kota));
}).toList(),
onChanged: (String? kota) {
setState(() {
kotaTerpilih = kota!;
});
},
validator: (nilai) {
if (nilai == null || nilai.isEmpty) {
return ‘Tempat lahir harus dipilih’;
}
return null;
},
onSaved: (nilai) {
kotaTinggal = nilai;
},
),
),
Expanded(
child: TextFormField(
inputFormatters: [tglLahirFormat],
autocorrect: false,
keyboardType: TextInputType.number,
decoration: const InputDecoration(
labelText: ‘Tanggal Lahir’,
hintText: “31/12/2020”,
hintStyle: TextStyle(color: Colors.grey),
fillColor: Colors.white,
filled: true,
),
validator: (nilai) {
if (nilai == null || nilai.isEmpty) {
return ‘harus diisi’;
}
return null;
},
onSaved: (nilai) {
tglLahir = nilai;
},
),
),
],
),
Align(
alignment: Alignment.centerLeft,
child: Text(
‘Jenis Kelamin :’,
textAlign: TextAlign.start,
style: TextStyle(fontSize: 17),
),
),
RadioGroup(
onChanged: (String? nilai) {
setState(() {
jKel = nilai;
});
},
groupValue: jKel,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: opsiJkel.map((sex) {
return Expanded(
child: RadioListTile<String>(
title: Text(sex),
value: sex,
),
);
}).toList(),
),
),
TextFormField(
keyboardType: TextInputType.multiline,
minLines: 3,
maxLines: 7,
decoration: InputDecoration(
labelText: ‘Masukan Alamatmu disini’,
hintText: ‘nama jalan, rt, rt, kodepos’,
),
validator: (nilai) {
if (nilai == null || nilai.isEmpty) {
return ‘harus diisi’;
}
return null;
},
onSaved: (nilai) {
alamat = nilai;
},
),
FilledButton(
onPressed: () {
if (_formKey.currentState!.validate()) {
_formKey.currentState!.save();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
‘Nilai tersimpan: $namaLengkap, $kotaTinggal, $jKel, $tglLahir, $alamat’,
),
),
);
}
},
child: Text(‘Simpan’),
),
],
),
),
),
);
}
}