问题描述
我最近构建了从 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(),snapshot) {
return ValueListenableBuilder(
valueListenable: Hive.Box(' ').listenable(),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();
});
}
}
解决方法
您需要启用 proguard 才能使其在发布模式下工作。转到 android>app>build.gradle
release {
signingConfig signingConfigs.release
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile(
'proguard-android-optimize.txt'),'proguard-rules.pro'
}
那么这对我有用