【问题标题】:App crashing while navigating to specific page using Navigator.push()使用 Navigator.push() 导航到特定页面时应用程序崩溃
【发布时间】:2021-06-13 09:15:21
【问题描述】:

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

【问题讨论】:

    标签: flutter provider flutter-hive


    【解决方案1】:

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

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

    那么这对我有用

    【讨论】:

    • 这对我没有帮助。版本:1.0.0+1 环境:sdk:">=2.7.0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多