Оператор проверки нуля, используемый для нулевого значения, кто-нибудь может мне помочь?

#android #flutter #dart

#Android #флаттер #dart

Вопрос:

Я закончил свои приложения flutter, и при отладке он отлично работает на эмуляторе. Но когда я выпускаю appdebug.apk и эмулируйте его онлайн (вот ссылка на этот эмулятор Google extensions https://chrome.google.com/webstore/detail/apkonline-apk-manager-for/lnhnebkkgjmlgomfkkmkoaefbknopmja) , он показывает эту ошибку: ошибка изображения

Вот мой код:

 import 'package:final_translating_test/app_localizations.dart';
import 'package:flutter/material.dart';

import 'package:like_button/like_button.dart';
import 'package:tab_indicator_styler/tab_indicator_styler.dart';
import 'package:cached_network_image/cached_network_image.dart';

class MyFoodPage extends StatefulWidget {
  const MyFoodPage({Key? key}) : super(key: key);

  @override
  _MyFoodPageState createState() => _MyFoodPageState();
}

class _MyFoodPageState extends State<MyFoodPage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: [
          Stack(children: [
            Padding(
              padding: const EdgeInsets.only(bottom: 15.0),
              child: ClipRRect(
                borderRadius: BorderRadius.only(
                    bottomLeft: Radius.circular(20),
                    bottomRight: Radius.circular(20)),
                child: Container(
                  height: 225,
                  width: MediaQuery.of(context).size.width,
                  child: CachedNetworkImage(
                    imageUrl:
                        "https://team-building-vietnam.com/wp-content/uploads/2015/11/Vietnamese-food-2-980x697.jpg",
                    fit: BoxFit.fill,
                    placeholder: (context, url) => CircularProgressIndicator(),
                    errorWidget: (context, url, error) => Icon(Icons.error),
                  ),
                ),
              ),
            ),
            Padding(
              padding: const EdgeInsets.fromLTRB(20, 25, 0, 0),
              child: Text("Ẩm Thực",
                  style: TextStyle(
                      fontFamily: "iCiel", color: Colors.white, fontSize: 35)),
            ),
            Padding(
              padding: const EdgeInsets.fromLTRB(20, 75, 0, 0),
              child: Text(AppLocalizations.of(context)!.translate("AmThuc"),
                  style: TextStyle(
                      fontFamily: "Manrope",
                      color: Colors.white,
                      fontSize: 15)),
            ),
          ]),
          Expanded(
            child: DefaultTabController(
              length: 3,
              child: Scaffold(
                backgroundColor: Colors.white,
                body: Column(
                  children: [
                    Divider(),
                    TabBar(
                      labelStyle: TextStyle(fontWeight: FontWeight.w700),
                      indicatorSize: TabBarIndicatorSize.label,
                      labelColor: Color(0xFF55B5FF),
                      unselectedLabelColor: Color(0xff5f6368),
                      isScrollable: true,
                      indicator: MaterialIndicator(
                        color: Colors.blue.shade300,
                        paintingStyle: PaintingStyle.fill,
                      ),
                      tabs: <Widget>[
                        Tab(
                          text:
                              AppLocalizations.of(context)!.translate("CaPhe"),
                        ),
                        Tab(
                          text: AppLocalizations.of(context)!
                              .translate("QuanAnBinhDan"),
                        ),
                        Tab(
                          text: AppLocalizations.of(context)!
                              .translate("NhaHang"),
                        ),
                      ],
                    ),
                    Divider(),
                    Expanded(
                      child: TabBarView(
                        children: [
                          Scrollbar(
                            child: ListView(children: [
                              foodCard(
                                  context,
                                  "TraSuaGiay",
                                  "https://tikibook.com/upload/news/012020/tra-sua-giay-1.jpg",
                                  "LocationTraSuaGiay",
                                  103),
                              foodCard(
                                  context,
                                  "HuongLong",
                                  "https://huonglongcoffee.com/wp-content/uploads/2021/08/huonglongcoffee-15.jpg",
                                  "LocationHuongLong",
                                  169),
                              foodCard(
                                  context,
                                  "DuXanh",
                                  "https://i1.wp.com/kenhhomestay.com/wp-content/uploads/2020/02/quan-cafe-dak-nong-4.jpg",
                                  "LocationDuXanh",
                                  138),
                              foodCard(
                                  context,
                                  "SuoiHoa",
                                  "https://i2.wp.com/kenhhomestay.com/wp-content/uploads/2020/02/quan-cafe-dak-nong-3.jpg",
                                  "LocationSuoiHoa",
                                  192),
                              foodCard(
                                  context,
                                  "BlackAndWhite",
                                  "https://toplist.vn/images/800px/blackwhite-house-coffeeamptea-685321.jpg",
                                  "LocationBlackAndWhite",
                                  98),
                              foodCard(
                                  context,
                                  "DakLaoCafe",
                                  "https://toplist.vn/images/800px/cafe-daklao-685406.jpg",
                                  "LocationDakLaoCafe",
                                  192),
                              foodCard(
                                  context,
                                  "HoaSua",
                                  "https://lh3.googleusercontent.com/p/AF1QipPSKX0tp8UWM3_YmiGFE8FLQX_4TbXW4udExZ9F=s1600-w400",
                                  "LocationHoaSua",
                                  108),
                              foodCard(
                                  context,
                                  "ALaCa",
                                  "https://ntcogroup.com/wp-content/uploads/2021/09/ntcodecor-thiet-ke-quan-tra-sua-alaca-dakmil-6.jpg",
                                  "LocationALaCa",
                                  125),
                              foodCard(
                                  context,
                                  "BepNhaKai",
                                  "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSgq2IdZ-Oxk-GiOdPqngEXWEMaunoKuUfcaAamp;usqp=CAU",
                                  "LocationBepNhaKai",
                                  309),
                            ]),
                          ),
                          Scrollbar(
                            child: ListView(children: [
                              foodCard(
                                  context,
                                  "NemNuongNgocTram",
                                  "https://images.foody.vn/res/g7/62103/s180x180/foody-ngoc-tram-nem-nuong-nha-trang-988-636667402631257693.jpg",
                                  "LocationNemNuongNgocTram",
                                  148),
                              foodCard(
                                  context,
                                  "BunBoThao",
                                  "https://images.foody.vn/res/g99/987355/s/foody-bun-bo-thao-987355-719-637121746486643649.jpg",
                                  "LocationBunBoThao",
                                  259),
                              foodCard(
                                  context,
                                  "MaiTy",
                                  "https://images.foody.vn/res/g66/652636/prof/s576x330/foody-mobile-t4-jpg-568-636281937101170710.jpg",
                                  "LocationMaiTy",
                                  175),
                              foodCard(
                                  context,
                                  "DeThuyCuong",
                                  "https://www.tourdulichbentre.com/images/com_adsmanager/contents/quan-de-th-y-cuong_3818_1.jpg",
                                  "LocationDeThuyCuong",
                                  298),
                              foodCard(
                                  context,
                                  "DeDuKi",
                                  "https://images.foody.vn/res/g99/987355/prof/s576x330/foody-upload-api-foody-mobile-bun-bo-hue-200110150825.jpg",
                                  "LocationDeDuKi",
                                  152),
                              foodCard(
                                  context,
                                  "BeNgocAnh",
                                  "https://images.foody.vn/res/g75/748725/prof/s576x330/foody-upload-api-foody-mobile-recipe7034-635642571-180608134200.jpg",
                                  "LocationBeNgocAnh",
                                  188),
                            ]),
                          ),
                          Scrollbar(
                            child: ListView(children: [
                              foodCard(
                                  context,
                                  "NhaHangTuanThao",
                                  "https://www.tourdulichbentre.com/images/com_adsmanager/contents/nha-hang-ti-c-cu-i-tu-n-th-o_3815_1.jpg",
                                  "LocationNhaHangTuanThao",
                                  268),
                              foodCard(
                                  context,
                                  "NhaHangPhuongThuy",
                                  "https://images.foody.vn/res/g73/720472/prof/s576x330/foody-mobile-hmn-jpg.jpg",
                                  "LocationNhaHangPhuongThuy",
                                  402),
                              foodCard(
                                  context,
                                  "NguyenThanh",
                                  "https://images.foody.vn/res/g77/765827/prof/s576x330/foody-upload-api-foody-mobile-16-gif-180803180808.jpg",
                                  "LocationNguyenThanh",
                                  193),
                            ]),
                          ),
                        ],
                      ),
                    ),
                  ],
                ),
              ),
            ),
          ),
        ],
      ),
    );
  }
}

Widget foodCard(context, name, url, location, likeCount) {
  return Container(
    height: 300,
    padding: const EdgeInsets.only(top: 20, left: 20, right: 20),
    child: Stack(
      children: [
        ClipRRect(
          borderRadius: BorderRadius.circular(15),
          child: Container(
            height: 300,
            width: MediaQuery.of(context).size.width,
            child: CachedNetworkImage(
              imageUrl: url,
              fit: BoxFit.fill,
              placeholder: (context, url) => CircularProgressIndicator(),
              errorWidget: (context, url, error) => Icon(Icons.error),
            ),
          ),
        ),
        Padding(
          padding: EdgeInsets.only(left: 20, top: 140),
          child: Text(AppLocalizations.of(context)!.translate(name),
              style: TextStyle(
                  color: Colors.white, fontFamily: "iCiel", fontSize: 30)),
        ),
        Column(
          children: [
            Padding(
              padding: EdgeInsets.only(left: 20, top: 190),
              child: Text(AppLocalizations.of(context)!.translate(location),
                  style: TextStyle(
                      color: Colors.white,
                      fontFamily: "Manrope",
                      fontSize: 15)),
            ),
            LikeButton(
              onTap: onLikeButtonTapped,
              likeCount: likeCount,
            ),
          ],
        ),
      ],
    ),
  );
}

Future<bool> onLikeButtonTapped(bool isLiked) async {
  /// send your request here
  // final bool success= await sendRequest();

  /// if failed, you can do nothing
  // return success? !isLiked:isLiked;

  return isLiked;
}
 

P / s: интересно, почему, когда я использую файл apprelease.apk, он не работает должным образом. Поэтому, пожалуйста, объясните это и мне. И, пожалуйста, скажите мне, как это сделать.файлы apk используются как реальное программное обеспечение без использования какого-либо эмулятора.

Комментарии:

1. Проще говоря. Вы используете ! оператор для нулевого значения. Так что ищите везде, где вы использовали ! operator. Насколько я вижу AppLocalizations.of(context)!.translate("AmThuc") AppLocalizations.of(context)!.translate("CaPhe"), AppLocalizations.of(context)!.translate("QuanAnBinhDan") AppLocalizations.of(context)!.translate("NhaHang"), AppLocalizations.of(context)!.translate(name) AppLocalizations.of(context)!.translate(name) AppLocalizations.of(context)!.translate(location) , это возможные места. Я предполагаю, что ваш контекст равен нулю.

2. Хммм, позвольте мне попробовать

3. Метод ‘translate’ не может быть вызван безоговорочно, потому что получатель может быть ‘null’. Попробуйте сделать вызов условным (используя ‘?.’) или добавить нулевую проверку к цели (‘!’). (Я попытался удалить его, но он показал эту ошибку)

4. @XiXAm Существует множество отличных ресурсов, объясняющих нулевую безопасность, я предлагаю вам начать с них в первую очередь 🙂 dart.dev/null-safety/understanding-null-safety

5. Я до сих пор не знаю, почему он отлично работает с кодом, но не с файлами apk