/// @author: wml
/// @date : 2019-06-03 14:17
/// @email : mxl1989@gmail.com
/// @desc : 近期已读主题列表页面
import 'dart:async';
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_app/common/database_helper.dart';
import 'package:flutter_app/components/circle_avatar.dart';
import 'package:flutter_app/generated/i18n.dart';
import 'package:flutter_app/models/web/item_recent_read_topic.dart';
import 'page_topic_detail.dart';
/*
已读界面
*/
class RecentReadTopicsPage extends StatefulWidget {
@override
_RecentReadTopicsPageState createState() => _RecentReadTopicsPageState();
}
class _RecentReadTopicsPageState extends State<RecentReadTopicsPage> {
bool hasData = false;//是否有数据
var databaseHelper = DatabaseHelper.instance;
Future<List<RecentReadTopicItem>> topicListFuture;
//获取近期已读列表
Future<List<RecentReadTopicItem>> getTopics() async {
return await databaseHelper.getRecentReadTopics();
}
@override
void initState() {
super.initState();
topicListFuture = getTopics();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("近期已读"),
actions: <Widget>[
IconButton(
tooltip: 'Clear Recent Read',
icon: Icon(Icons.delete_sweep),
onPressed: () {
if (hasData) {
showDialog(
context: (context),
builder: (BuildContext context) => AlertDialog(
content: Text('你确定要清空已读记录吗?'),
actions: <Widget>[
FlatButton(onPressed: () => Navigator.of(context, rootNavigator: true).pop(), child: Text('取消')),
FlatButton(
onPressed: () async {
Navigator.of(context, rootNavigator: true).pop();
await databaseHelper.deleteAll();
setState(() {
topicListFuture = getTopics();
});
},
child: Text('确定')),
],
));
}
},
)
],
),
body: FutureBuilder<List<RecentReadTopicItem>>(
future: topicListFuture,
builder: (context, snapshot) {
if (snapshot.hasData) {
hasData = snapshot.data.length > 0;
return snapshot.data.length > 0
? new Container(
child: ListView.builder(
itemBuilder: (context, index) => TopicItemView(snapshot.data[index]), itemCount: snapshot.data.length))
: Center(
child: Text("NO READ YET!"),
);
} else if (snapshot.hasError) {
return Center(
child: Text(S.of(context).oops),
);
}
return Center(
child: Platform.isIOS ? CupertinoActivityIndicator() : CircularProgressIndicator(),
);
}),
);
}
}
/// topic item view
class TopicItemView extends StatefulWidget {
final RecentReadTopicItem topic;
TopicItemView(this.topic);
@override
_TopicItemViewState createState() => _TopicItemViewState();
}
class _TopicItemViewState extends State<TopicItemView> {
@override
Widget build(BuildContext context) {
}
}
FutureBuilder方式创建页面
最新推荐文章于 2024-05-16 22:39:17 发布