import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/model/live_care/AlternativeServicesList.dart'; import 'package:doctor_app_flutter/core/viewModel/LiveCarePatientViewModel.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class TestScreen extends StatefulWidget { @override _TestScreenState createState() => _TestScreenState(); } class _TestScreenState extends State { @override Widget build(BuildContext context) { return BaseView( onModelReady: (model) => model.setDemoData(), builder: (_, model, w) => AppScaffold( baseViewModel: model, appBarTitle: TranslationBase.of(context).patientProfile, backgroundColor: Theme.of(context).scaffoldBackgroundColor, isShowAppBar: false, body: Container( child: Center( child: AppButton( fontWeight: FontWeight.w700, color: Colors.red[600], title: "open dialog", //TranslationBase.of(context).close, onPressed: () { showAlternativesDialog(context, model, () { model.alternativeServicesList.map((e) => () { if (e.isSelected) { print(e.serviceName); } }); Navigator.of(context).pop(); }); }, ), ), ), ), ); } showAlternativesDialog(BuildContext context, LiveCarePatientViewModel model, Function okFunction) { return showDialog( context: context, barrierDismissible: false, // user must tap button! builder: (_) { return Container( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ AlertDialog( title: null, content: Container( height: MediaQuery.of(context).size.height / 2, child: CheckBoxListWidget(model: model,), ), actions: [ AppButton( onPressed: (){ okFunction(); }, title: TranslationBase.of(context).noteConfirm, fontColor: Colors.white, color: Colors.green[600], ), AppButton( onPressed: () { Navigator.of(context).pop(); }, title: TranslationBase.of(context).cancel, fontColor: Colors.white, color: Colors.red[600], ), ], ), ], ), ); }); } } class CheckBoxListWidget extends StatefulWidget { final LiveCarePatientViewModel model; const CheckBoxListWidget({ Key key, this.model, }) : super(key: key); @override _CheckBoxListState createState() => _CheckBoxListState(); } class _CheckBoxListState extends State { @override Widget build(BuildContext context) { return SingleChildScrollView( child: Column( children: [ ...widget.model .alternativeServicesList .map( (element) => Container( child: CheckboxListTile( title: AppText( element.serviceName, fontWeight: FontWeight.normal, fontSize: SizeConfig.textMultiplier * 2.2, ), value: element.isSelected, onChanged: (newValue) { setState(() { widget.model.setSelected( element, newValue); }); }, activeColor: Color(0xFFD02127), controlAffinity: ListTileControlAffinity.leading, contentPadding: EdgeInsets.all(0), ), ), ) .toList() ], ), ); } }