我最近构建了从 wordpress 获取内容的应用程序。所有的东西都工作正常。我添加了保存内容的功能。我使用 Hive 和 Hive flutter 来保存内容。在调试版本中它工作正常,但在发布版本中,当我导航到下载页面时,我的添加冻结。我尝试提供存储权限。
import 'package:flutter/material.dart';
import 'package:hive/hive.dart';
import 'package:hive_flutter/hive_flutter.dart';
import 'package:songslyric/main.dart';
import 'contentcard.dart';
class FavScreen extends StatefulWidget {
FavScreen({Key key}) : super(key: key);
@override
_FavScreenState createState() => _FavScreenState();
}
class _FavScreenState extends State<FavScreen> {
Box box;
List favlist = [];
List obj = [];
openBox() async {
box = await Hive.openBox("favourite");
return Future.value(box);
}
getfavCache() async {
favlist.clear();
setState(() {
favlist = box.toMap().values.toList();
for (var data in favlist) {
obj.add(data);
}
});
return obj;
}
@override
void initState() {
// getfavCache();
super.initState();
}
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: openBox(),
builder: (context, snap) {
Loading();
if (snap.hasData) {
return FutureBuilder(
future: getfavCache(),
builder: (context, snapshot) {
return ValueListenableBuilder(
valueListenable: Hive.box(' ').listenable(),
builder: (context, Box box, _) {
if (box.values.length > 0) {
return ListView.builder(
itemCount: box.values.length,
itemBuilder: (context, data) {
return Contentcard(
id: box.values.toList()[data]["id"],
url: box.values
.toList()[data]["url"]
.toString(),
content: box.values
.toList()[data]["content"]
.toString(),
title: box.values
.toList()[data]["title"]
.toString(),
date: box.values
.toList()[data]["date"]
.toString(),
);
});
} else {
return Center(
child: Text(
"Empty!",
style: TextStyle(color: Colors.grey, fontSize: 20),
));
}
});
});
}
if (snap.hasError) {
return Loading();
}
return Loading();
});
}
}