150 lines
5.0 KiB
Dart
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;
|
|
});
|
|
}
|
|
}
|
|
}
|