使用 Navigator.push() 导航到特定页面时应用程序崩溃

问题描述

我最近构建了从 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'
       }

那么这对我有用