import 'package:fcs/fcs/common/domain/entities/faq.dart'; import 'package:fcs/fcs/common/helpers/theme.dart'; import 'package:fcs/fcs/common/localization/app_translations.dart'; import 'package:fcs/fcs/common/pages/contact/widgets.dart'; import 'package:fcs/fcs/common/pages/util.dart'; import 'package:fcs/fcs/common/pages/widgets/input_text.dart'; import 'package:fcs/fcs/common/pages/widgets/progress.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_icons/flutter_icons.dart'; class FAQEditor extends StatefulWidget { final FAQ faq; const FAQEditor({this.faq}); @override _FAQEditorState createState() => _FAQEditorState(); } class _FAQEditorState extends State { TextEditingController _engQ = new TextEditingController(); TextEditingController _mmQ = new TextEditingController(); TextEditingController _engA = new TextEditingController(); TextEditingController _mmA = new TextEditingController(); final _formKey = GlobalKey(); bool _isLoading = false; bool _isNew = false; @override void initState() { super.initState(); _isNew = widget.faq == null; if (widget.faq != null) { _engQ.text = widget.faq.questionEng; _mmQ.text = widget.faq.questionMm; _engA.text = widget.faq.answerEng; _mmA.text = widget.faq.answerMm; } } @override Widget build(BuildContext context) { final usaPhoneBox = InputText( iconData: SimpleLineIcons.question, controller: _engQ, maxLines: 2, withBorder: true, ); final mmPhoneBox = InputText( iconData: MaterialCommunityIcons.message_reply_text, controller: _mmQ, maxLines: 5, withBorder: true, ); final usaAddreesBox = InputText( iconData: SimpleLineIcons.question, controller: _engA, maxLines: 2, withBorder: true, ); final mmAddressBox = InputText( iconData: MaterialCommunityIcons.message_reply_text, controller: _mmA, maxLines: 5, withBorder: true, ); return LocalProgress( inAsyncCall: _isLoading, child: CupertinoPageScaffold( child: NestedScrollView( headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) { return [ SliverAppBar( leading: IconButton( icon: Icon( CupertinoIcons.back, size: 30, ), onPressed: () => Navigator.of(context).pop(), ), backgroundColor: primaryColor, expandedHeight: 150.0, floating: true, pinned: true, flexibleSpace: FlexibleSpaceBar( centerTitle: true, titlePadding: EdgeInsets.symmetric(vertical: 10), title: Text( AppTranslations.of(context) .text(_isNew?'faq.add.title':'faq.edit.title'), style: TextStyle( color: Colors.white, )), ), actions: [ IconButton( onPressed: () => _submit(), icon: Icon( Icons.save, color: Colors.white, )) ], ), ]; }, body: Material( child: Form( key: _formKey, child: ListView( shrinkWrap: true, padding: EdgeInsets.only(left: 24.0, right: 24.0), children: [ itemTitle(context, "faq.edit.eng"), subItemTitle(context, "faq.edit.question"), usaPhoneBox, subItemTitle(context, "faq.edit.answer"), mmPhoneBox, Divider(), itemTitle(context, "faq.edit.mm"), subItemTitle(context, "faq.edit.question"), usaAddreesBox, subItemTitle(context, "faq.edit.answer"), mmAddressBox, ], ), ), )))); } _submit() async { setState(() { _isLoading = true; }); try { widget.faq.questionEng = _engQ.text; // var contactModel = Provider.of(context, listen: false); // await contactModel.saveContact(widget.contact); Navigator.pop(context); } catch (e) { showMsgDialog(context, "Error", e.toString()); } finally { setState(() { _isLoading = false; }); } } }