Skip to content

Commit b879923

Browse files
committed
update ui
1 parent 07a9722 commit b879923

File tree

2 files changed

+54
-35
lines changed

2 files changed

+54
-35
lines changed

lib/pages/import_export_page.dart

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,26 @@ class ImportExportPage extends StatefulWidget {
1919

2020
class _ImportExportPageState extends State<ImportExportPage> {
2121
bool _loading = false;
22-
String content = '';
2322
final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
23+
final TextEditingController __textEditingController = TextEditingController(text: '');
2424

2525
@override
2626
void initState() {
2727
super.initState();
2828
loadData();
2929
}
3030

31+
@override
32+
void dispose() {
33+
__textEditingController.dispose();
34+
super.dispose();
35+
}
36+
3137
void loadData() async {
32-
_loading = true;
33-
content = JsonEncoder.withIndent(" ").convert(widget.questions);
38+
setState(() {
39+
_loading = true;
40+
});
41+
__textEditingController.text = JsonEncoder.withIndent(" ").convert(widget.questions);
3442
setState(() {
3543
_loading = false;
3644
});
@@ -53,7 +61,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
5361
children: [
5462
RaisedButton.icon(
5563
onPressed: () async {
56-
List<dynamic> data = json.decode(content);
64+
List<dynamic> data = json.decode(__textEditingController.text);
5765
var questions = data.map((item) => Question.fromJson(item)).toList();
5866
var prefs = await LocalStorage.getInstance();
5967
var rawTemplate = prefs.getString('rawTemplate');
@@ -81,7 +89,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
8189
label: Text('copy as raw')),
8290
RaisedButton.icon(
8391
onPressed: () async {
84-
List<dynamic> data = json.decode(content);
92+
List<dynamic> data = json.decode(__textEditingController.text);
8593
var questions = data.map((item) => Question.fromJson(item)).toList();
8694
var prefs = await LocalStorage.getInstance();
8795
var programTemplate = prefs.getString('programTemplate');
@@ -114,10 +122,12 @@ class _ImportExportPageState extends State<ImportExportPage> {
114122
children: [
115123
RaisedButton.icon(
116124
onPressed: () async {
117-
List<dynamic> data = json.decode(content);
118-
var questions = data.map((item) => json.encode(item)).toList();
119-
var prefs = await LocalStorage.getInstance();
120-
prefs.setStringList('questions', questions);
125+
List<dynamic> data = json.decode(__textEditingController.text);
126+
// var questions = data.map((item) => json.encode(item)).toList();
127+
// var prefs = await LocalStorage.getInstance();
128+
// prefs.setStringList('questions', questions);
129+
var questions = data.map((item) => Question.fromJson(item)).toList();
130+
Navigator.of(context).pop(questions);
121131
_scaffoldKey.currentState.showSnackBar(
122132
SnackBar(
123133
content: Text('import successfully!'),
@@ -128,7 +138,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
128138
label: Text('import')),
129139
RaisedButton.icon(
130140
onPressed: () async {
131-
Clipboard.setData(ClipboardData(text: content));
141+
Clipboard.setData(ClipboardData(text: __textEditingController.text));
132142
_scaffoldKey.currentState.showSnackBar(
133143
SnackBar(
134144
content: Text('export successfully, copied to the clipboard!'),
@@ -141,20 +151,10 @@ class _ImportExportPageState extends State<ImportExportPage> {
141151
),
142152
Padding(
143153
padding: const EdgeInsets.all(defaultMargin),
144-
child: Row(
145-
children: [
146-
Expanded(
147-
child: HighlightView(
148-
content,
149-
readOnly: false,
150-
language: 'json',
151-
theme: themeMap['solarized-light'],
152-
padding: EdgeInsets.all(defaultMargin),
153-
textStyle:
154-
TextStyle(fontFamily: 'SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace'),
155-
),
156-
),
157-
],
154+
child: TextField(
155+
maxLines: 10,
156+
controller: __textEditingController,
157+
decoration: InputDecoration(labelText: 'Content'),
158158
),
159159
),
160160
],

lib/pages/question_page.dart

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ class _QuestionPageState extends State<QuestionPage> {
2929
}
3030

3131
loadData() async {
32-
_loading = true;
32+
setState(() {
33+
_loading = true;
34+
});
3335
var prefs = await LocalStorage.getInstance();
3436
var questions = prefs.getStringList('questions');
3537
print('loadData questions: $questions');
@@ -48,19 +50,22 @@ class _QuestionPageState extends State<QuestionPage> {
4850
prefs.setStringList('questions', questions);
4951
}
5052

53+
refresh() async {
54+
setState(() {
55+
_loading = true;
56+
});
57+
await Future.delayed(Duration(milliseconds: 500));
58+
setState(() {
59+
_loading = false;
60+
});
61+
}
62+
5163
@override
5264
Widget build(BuildContext context) {
5365
return Scaffold(
5466
key: _scaffoldKey,
5567
appBar: AppBar(
56-
actions: [
57-
IconButton(
58-
icon: Icon(Icons.save),
59-
onPressed: () async {
60-
await saveData();
61-
},
62-
)
63-
],
68+
actions: [],
6469
),
6570
body: Padding(
6671
padding: const EdgeInsets.all(defaultMargin),
@@ -129,6 +134,16 @@ class _QuestionPageState extends State<QuestionPage> {
129134
child: Icon(Icons.import_export),
130135
onPressed: () async => _handleImportExport(),
131136
),
137+
FloatingActionButton(
138+
heroTag: 'save',
139+
child: Icon(Icons.save),
140+
onPressed: () async => saveData(),
141+
),
142+
FloatingActionButton(
143+
heroTag: 'refresh',
144+
child: Icon(Icons.refresh),
145+
onPressed: () async => refresh(),
146+
),
132147
],
133148
colorStartAnimation: Colors.blue,
134149
colorEndAnimation: Colors.red,
@@ -148,12 +163,16 @@ class _QuestionPageState extends State<QuestionPage> {
148163
}
149164

150165
_handleImportExport() async {
151-
await Navigator.of(context).push(
166+
List<Question> questions = await Navigator.of(context).push(
152167
MaterialPageRoute(
153168
builder: (context) => ImportExportPage(questions: _list),
154169
),
155170
);
156-
loadData();
171+
if (questions != null) {
172+
setState(() {
173+
_list = questions;
174+
});
175+
}
157176
}
158177

159178
_handleAdd() async {

0 commit comments

Comments
 (0)