1

我最近构建了从 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();
    });
        }
       }
4

1 回答 1

1

您需要启用 proguard 才能使其在发布模式下工作。转到 android>app>build.gradle

release {
           signingConfig signingConfigs.release
           minifyEnabled true
           shrinkResources true
           proguardFiles getDefaultProguardFile(
                   'proguard-android-optimize.txt'),
                   'proguard-rules.pro'
       }

那么这对我有用

于 2021-03-16T05:16:36.703 回答