import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:fcs/model/language_model.dart'; import 'package:fcs/model/main_model.dart'; import 'package:fcs/model/manual_model.dart'; import 'package:fcs/pages/manual/manual_item_title_dialog.dart'; import 'package:fcs/pages/util.dart'; import 'package:fcs/vo/manual.dart'; import 'package:fcs/widget/local_text.dart'; import 'package:fcs/widget/progress.dart'; import '../../theme/theme.dart'; import 'slide_page.dart'; class ManualPage extends StatefulWidget { final String marketplace; const ManualPage({Key key, this.marketplace}) : super(key: key); @override _ManualPageState createState() => _ManualPageState(); } class _ManualPageState extends State { TextEditingController _manualVersionController = TextEditingController(); final double dotSize = 10.0; List helpList = new List(); bool isEng; String versionName; bool _isLoading = false; @override void initState() { helpList.clear(); var manualModel = Provider.of(context, listen: false); var mainModel = Provider.of(context, listen: false); versionName = manualModel.version; helpList = manualModel.getHelpList(mainModel.isBuyer()); super.initState(); } @override Widget build(BuildContext context) { var manualModel = Provider.of(context); var mainModel = Provider.of(context); var languageModel = Provider.of(context); isEng = languageModel.isEng; return LocalProgress( inAsyncCall: _isLoading, child: Scaffold( appBar: AppBar( leading: new IconButton( icon: new Icon(Icons.close, color: secondaryColor), onPressed: () => Navigator.of(context).pop(), ), title: Text(widget.marketplace == null ? '' : widget.marketplace), backgroundColor: primaryColor, ), body: Column( children: [ new Expanded( child: new ListView.builder( scrollDirection: Axis.vertical, padding: EdgeInsets.only(left: 15, right: 15, top: 5), shrinkWrap: true, itemCount: helpList.length, itemBuilder: (BuildContext context, int index) { return Card( elevation: 10, color: Colors.white, child: InkWell( onTap: () { Navigator.push( context, MaterialPageRoute( builder: (context) => SlidePage( helpDetail: helpList[index], index: index, )), ); }, child: Row(children: [ Expanded( child: new Padding( padding: const EdgeInsets.symmetric(vertical: 5.0), child: new Row( children: [ new Padding( padding: new EdgeInsets.symmetric( horizontal: 15.0 - dotSize / 2), child: Container( child: Image.asset( "assets/page.png", width: 50, height: 50, )), ), new Expanded( child: new Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( isEng ? helpList[index].title : helpList[index].titlemm, style: TextStyle( fontSize: 15, color: Colors.grey), ) ], ), ), ], ), ), ), mainModel.isSysAdmin() ? Container( padding: EdgeInsets.only(right: 20), child: InkWell( onTap: () { showConfirmDialog( context, "manual.confirm", () { setState(() { manualModel.deleteManualItem( helpList[index]); helpList = manualModel.getHelpList( mainModel.isBuyer()); }); }); }, child: Icon(Icons.delete), )) : Container() ])), ); }), ), ], ), floatingActionButton: mainModel.isSysAdmin() ? FloatingActionButton( onPressed: () async { ManualItem newItem = await showDialog( context: context, builder: (_) => ManualItemTitleDialog()); if (helpList.toList().length == 0) { newItem.id = 1; } else { dynamic max = helpList.first; helpList.forEach((e) { if (e.id > max.id) max = e; }); newItem.id = max.id + 1; } setState(() { helpList.add(newItem); }); manualModel.addManualTitle(newItem); }, child: Icon(Icons.add), ) : null, ), ); } _deleteManualItem(ManualItem item, ManualModel manualModel) { return showConfirmDialog(context, "manual.confirm", () { setState(() { manualModel.deleteManualItem(item); }); }); } _inputManualVersion(BuildContext context, ManualModel manModel) async { return showDialog( context: context, builder: (context) { return AlertDialog( title: new Text('Version'), content: TextField( controller: _manualVersionController, decoration: InputDecoration(hintText: "Enter manual version"), ), actions: [ new FlatButton( onPressed: () { String version = _manualVersionController.text; String dir = manModel.dataDir; manModel.uploadStorageManualData(version, dir); Navigator.of(context).pop(); }, child: new Text('Save')) ], ); }); } }