微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android 发布小部件失败

如何解决Android 发布小部件失败

我已经使用 MobX 作为我的状态管理构建了一个 Flutter 应用程序,并且目前遇到了一个奇怪的问题,该问题仅存在于以发布模式运行的 Android 上。但是,在我的应用程序的这个特定页面上,观察者只会显示列表中的最后一个条目。其他项目存在,但 UI 将仅显示列表的最后一个索引。当我转动手机横向时,可以看到列表的全部内容,并且页面完全按预期显示。当页面已经加载时,有没有办法强制小部件在 MobX 中重新渲染?

附上我的颤振医生的输出

同样,此问题仅存在于我的应用的 Android 版本版本中。它在调试时在 iOS 和 Android 上完美运行。

任何帮助将不胜感激。

enter image description here

下面是有问题的小部件在发布模式下呈现问题

    Widget _carPackageList() {
    return ListView.builder(
        physics: NeverScrollableScrollPhysics(),shrinkWrap: true,itemCount: viewmodel.customerCars.length,itemBuilder: (context,index) => _carListItem(index));
  }

  Widget _carListItem(index) {
    var packageDetails = viewmodel.getDetailBookingById(
        viewmodel.customerCars[index].packageGroupId);
    return Observer(
      builder: (context) {
        if (viewmodel.isLoading) {
          return CustomProgressIndiactor();
        } else {
          return Padding(
            padding: const EdgeInsets.all(8.0),child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,children: <Widget>[
                Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,children: [
                    Flexible(
                      child: Column(
                        children: [
                          Text(
                              viewmodel.customerCars[index].makeAndModel,maxLines: 2,style: TextStyle(
                                  fontSize: 25,fontFamily: 'Domus',color: Color(0xff3c99a0))),],),IconButton(
                        icon: Icon(Icons.highlight_remove,color: Colors.black),onpressed: () {
                          viewmodel.removeCustomerCar(index);
                          viewmodel.customerCars.removeAt(index);
                        })
                  ],Card(
                  shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(20.0),child: Container(
                    width: double.infinity,child: Column(
                      mainAxisSize: MainAxisSize.min,crossAxisAlignment: CrossAxisAlignment.start,children: <Widget>[
                        Row(
                          mainAxisAlignment: MainAxisAlignment.spaceBetween,children: [
                            Flexible(
                              child: Column(
                                children: [
                                  Padding(
                                    padding: const EdgeInsets.all(15.0),child: Text(packageDetails.name,overflow: TextOverflow.ellipsis,style: TextStyle(
                                            fontSize: 25,Padding(
                              padding: const EdgeInsets.all(15.0),child: Observer(
                                builder: (_) {
                                  var groupPrice =
                                      viewmodel.calculateCarCost(
                                          viewmodel.customerCars[index],viewmodel.customerCars[index]
                                              .packageGroupId);
                                  if (groupPrice == null) {
                                    return Text('£0.00',style: TextStyle(
                                            color: Color(0xff1A2E35),fontFamily: 'Aileron',fontWeight: FontWeight.w700));
                                  } else {
                                    return Text(
                                      '£${groupPrice.toStringAsFixed(2)}',style: TextStyle(
                                          color: Color(0xff1A2E35),fontWeight: FontWeight.w700),);
                                  }
                                },Padding(
                          padding: const EdgeInsets.only(
                              left: 15.0,top: 0,right: 15),child: Text(packageDetails.description,style: TextStyle(
                                  color: Color(0xff1A2E35),fontSize: 16,fontWeight: FontWeight.w300)),Padding(
                          padding: const EdgeInsets.all(15.0),child: Row(
                            mainAxisAlignment: MainAxisAlignment.spaceBetween,children: [
                              Text('Optional Extras',style: GoogleFonts.lato(
                                      fontSize: 16,color: Colors.black,fontWeight: FontWeight.bold)),Observer(
                                builder: (_) {
                                  var opExtraPrice = viewmodel
                                      .calculateOptionalExtrasPrice(viewmodel
                                          .customerCars[index]
                                          .optionalExtras);
                                  if (opExtraPrice == null) {
                                    return Text('£0.00',fontWeight: FontWeight.w700));
                                  } else {
                                    return Text(
                                        '£${opExtraPrice.toStringAsFixed(2)}',fontWeight: FontWeight.w700));
                                  }
                                },Padding(
                            padding: const EdgeInsets.all(15.0),child: ListView.builder(
                              shrinkWrap: true,physics: NeverScrollableScrollPhysics(),itemCount: viewmodel.customerCars[index]
                                  .optionalExtras.length,innerIndex) {
                                var detailedOptionalExtra =
                                    viewmodel.getoptinalExtraById(viewmodel
                                        .customerCars[index]
                                        .optionalExtras[innerIndex]
                                        .packageItemId);
                                return Text(
                                  detailedOptionalExtra.name,style: TextStyle(
                                      color: Color(0xff1A2E35),fontWeight: FontWeight.w300),);
                              },)),children: <Widget>[
                              Text(
                                'Total Cost:',style: TextStyle(
                                    color: Color(0xff1A2E35),Observer(
                                  builder: (context) => Text(
                                      '£${viewmodel.currentTotalCost.toStringAsFixed(2)}',fontWeight: FontWeight.w700))),)
                      ],);
        }
      },);
  }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。