Files
fcs/lib/fcs/common/pages/faq/faq_edit_page.dart
2020-09-07 16:05:28 +06:30

150 lines
5.0 KiB
Dart

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<FAQEditor> {
TextEditingController _engQ = new TextEditingController();
TextEditingController _mmQ = new TextEditingController();
TextEditingController _engA = new TextEditingController();
TextEditingController _mmA = new TextEditingController();
final _formKey = GlobalKey<FormState>();
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 <Widget>[
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: <Widget>[
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<ContactModel>(context, listen: false);
// await contactModel.saveContact(widget.contact);
Navigator.pop(context);
} catch (e) {
showMsgDialog(context, "Error", e.toString());
} finally {
setState(() {
_isLoading = false;
});
}
}
}