You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
diplomatic-quarter/lib/widgets/single_selection_dialog.dart

131 lines
3.7 KiB
Dart

3 years ago
import 'package:diplomaticquarterapp/core/model/packages_offers/responses/tamara_payment_option.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/CalendarUtils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:flutter/material.dart';
import 'package:jiffy/jiffy.dart';
import 'package:manage_calendar_events/manage_calendar_events.dart';
import 'package:permission_handler/permission_handler.dart';
class SingleSelectionDialog<T> extends StatefulWidget {
final List<T> items;
final String title;
3 years ago
final Widget icon;
3 years ago
1 year ago
SingleSelectionDialog(this.items, {required this.icon, required this.title});
3 years ago
1 year ago
Future<Future<T?>> show(BuildContext context) async {
3 years ago
return showDialog<T>(
context: context,
barrierDismissible: true, // user must tap button!
builder: (BuildContext context) {
return Dialog(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(0.0)),
insetPadding: EdgeInsets.all(21),
child: this,
);
},
);
}
@override
_SingleSelectionDialogState createState() => _SingleSelectionDialogState();
3 years ago
3 years ago
}
class _SingleSelectionDialogState extends State<SingleSelectionDialog> {
int i = 0;
@override
Widget build(BuildContext context) {
return Container(
//width: MediaQuery.of(context).size.width / 0.8,
padding: const EdgeInsets.all(20.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
3 years ago
SizedBox(
height: 40,
child: widget.icon,
3 years ago
),
3 years ago
3 years ago
IconButton(
icon: Icon(Icons.clear),
color: Color(0xff2B353E),
onPressed: () {
Navigator.of(context).pop();
},
),
],
),
mHeight(20),
Text(
widget.title,
style: TextStyle(
fontSize: 16,
color: Color(0xff2B353E),
fontWeight: FontWeight.w600,
letterSpacing: -0.48,
),
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 20),
child: optionList(widget.items),
),
mHeight(12),
DefaultButton(
TranslationBase.of(context).done,
() {
Navigator.pop(context, widget.items[i]);
},
color: CustomColors.green,
),
],
),
);
}
Widget optionList(List<dynamic> options){
3 years ago
return ListView.builder(
shrinkWrap: true,
itemCount: options.length,
itemBuilder: (ctx,idx){
final opt = options[idx];
return Row(
children: [
Radio<int>(
value: idx,
groupValue: i,
1 year ago
onChanged: (int? value) {
3 years ago
setState(() {
1 year ago
i = value!;
3 years ago
});
},
3 years ago
),
3 years ago
Text(
opt.toString(),
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.w600,
letterSpacing: -0.48,
),
),
],
);
}
3 years ago
);
}
}