import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:fcs/model/main_model.dart'; import 'package:fcs/pages/term_edit.dart'; import 'package:fcs/fcs/common/pages/util.dart'; import 'package:fcs/widget/local_text.dart'; import 'package:fcs/widget/progress.dart'; import 'package:zefyr/zefyr.dart'; import '../fcs/common/helpers/theme.dart'; typedef void ProfileCallback(); class Term extends StatefulWidget { final bool agreePage; const Term({Key key, this.agreePage = false}) : super(key: key); @override _TermState createState() => _TermState(); } class _TermState extends State { ZefyrController _controller; FocusNode _focusNode; NotusDocument document = new NotusDocument(); bool isLoading = false; @override void initState() { super.initState(); _controller = ZefyrController(_loadDocument()); print("controller terms => ${_controller.document}"); _focusNode = FocusNode(); } NotusDocument _loadDocument() { MainModel mainModel = Provider.of(context, listen: false); String term = mainModel.setting.terms; print("terms => $term"); NotusDocument doc; try { doc = NotusDocument.fromJson(jsonDecode(term)); print('doc=> $doc'); } catch (e) {} if (doc == null) { doc = NotusDocument(); } return doc; } @override Widget build(BuildContext context) { MainModel mainModel = Provider.of(context); bool isOwnerAndAbove = mainModel.user != null && mainModel.user.isOwnerAndAbove(); bool hasAdmin = mainModel.user != null && mainModel.user.hasAdmin(); // bool aggreed = mainModel.user.agreeTerms; bool aggreed = true; final agreeBtn = Padding( padding: EdgeInsets.symmetric(vertical: 10.0), child: Card( elevation: 10, child: Container( height: 45.0, child: ButtonTheme( minWidth: 900.0, height: 100.0, child: FlatButton.icon( onPressed: () { showConfirmDialog(context, "term.iagree", () async { _agree(); }); }, label: LocalText(context, "term.agree_btn"), icon: Icon( Icons.check, ), ), ), ), )); return LocalProgress( inAsyncCall: isLoading, child: Scaffold( appBar: AppBar( centerTitle: true, leading: new IconButton( icon: new Icon(Icons.close), onPressed: () => Navigator.of(context).pop(), ), // automaticallyImplyLeading: !widget.agreePage, title: LocalText(context, 'term', color: Colors.white, fontSize: 20), backgroundColor: primaryColor, actions: [ // isOwnerAndAbove || hasAdmin // ? IconButton( icon: Icon(Icons.edit), onPressed: () async { Navigator.push( context, MaterialPageRoute( builder: (context) => TermEdit((data) { setState(() { _controller = ZefyrController(data); }); })), ); // print('doc=> $doc'); // setState(() { // document = doc; // }); // var document = await // Navigator.push( // context, // MaterialPageRoute(builder: (context) => TermEdit()), // ); }, ) // : Container() ], ), body: Column( children: [ Expanded( child: Padding( padding: const EdgeInsets.all(8.0), child: Card( child: ZefyrTheme( data: ZefyrThemeData().copyWith(), child: ZefyrScaffold( child: ZefyrEditor( mode: ZefyrMode.view, padding: EdgeInsets.all(16), controller: _controller, focusNode: _focusNode, ), ))), )), !aggreed ? agreeBtn : Container(), ], ), ), ); } _agree() async { setState(() { isLoading = true; }); try { // MainModel mainModel = Provider.of(context); // await mainModel.agreeTerms(); // if (widget.agreePage) { // Future.delayed(const Duration(milliseconds: 3000), () { // Navigator.pop(context); // }); // } } catch (e) { showMsgDialog(context, "Error", e.toString()); setState(() { isLoading = false; }); } } }