标签: dart-null-safety

飞镖空安全!与?-

两者之间到底有什么区别

String id = folderInfo!.first.id;   //this works
Run Code Online (Sandbox Code Playgroud)

String id = folderInfo?.first.id; //this is an error
Run Code Online (Sandbox Code Playgroud)

我知道 ?。当值对象为 null 时返回 null,但是 !. 返回?

dart flutter dart-null-safety

0
推荐指数
1
解决办法
1260
查看次数

如何将大型项目迁移到空安全以在flutter中处理json数据

我已经有几个月没有在 flutter 中工作了,当我打开这么长时间后,出现了很多错误,我刚刚将所有软件包升级到最新版本,升级后我发现它现在只能在空安全的情况下工作,因为flutter 现在是 null 安全性,我是否需要将所有变量转换为 null 安全性,因为有时 api 中会出现 null 数据,我不知道如何对每个变量进行 null 检查,有大量的类

这是我之前的代码,我只是手动对 LoginResponse 变量进行 nullcheck

    LoginResponse loginResponseFromJson(String str) => LoginResponse.fromJson(json.decode(str));

String loginResponseToJson(LoginResponse data) => json.encode(data.toJson());

class LoginResponse {
  LoginResponse({
    this.loggedIn,
    this.user,
  });

  bool? loggedIn;
  User ? user;

  factory LoginResponse.fromJson(Map<String, dynamic> json) => LoginResponse(
    loggedIn: json["loggedIn"],
      user : json['user'] == null ? null : new User.fromJson(json['user']) ,

  );

  Map<String, dynamic> toJson() => {
    "loggedIn": loggedIn,

    "user": user == null ?null : user,
  };
}

class User {
  User({ …
Run Code Online (Sandbox Code Playgroud)

dart flutter dart-null-safety

0
推荐指数
1
解决办法
3617
查看次数

如何解决颤振上对空值使用空检查运算符的问题?

我尝试使用记录的用户 ID 从子集合中获取数据。然后显示这个错误 在此输入图像描述

我尝试从 firestore 子集合中获取它。集合名称是“users”,文档名称是 userid

代码

Future<void> getAmount() async {
    final id = "${loggedInUser.uid}";
    final reference = FirebaseFirestore.instance.doc('users/$id/recharge/$id');
    final snapshot = reference.get();

    final result = await snapshot.then(
        (snap) => snap.data() == null ? null : Amounts.fromJson(snap.data()!));
    print('result is ====> $result');
    setState(() {
      oneAmount = result;
      loading = false;
    });
  }
Run Code Online (Sandbox Code Playgroud)

文本小部件

Text(
            oneAmount!.amount,
            style: GoogleFonts.roboto(
              textStyle: TextStyle(
                fontSize: 20,
                fontWeight: FontWeight.bold,
                color: kWhite,
              ),
            ),
Run Code Online (Sandbox Code Playgroud)

模型

import 'dart:convert';

Amounts articlesFromJson(String str) => Amounts.fromJson(json.decode(str));

String articlesToJson(Amounts data) => json.encode(data.toJson()); …
Run Code Online (Sandbox Code Playgroud)

dart flutter google-cloud-firestore dart-null-safety

0
推荐指数
1
解决办法
527
查看次数

“无法以健全的零安全性运行”颤动现有项目?

我有一个想要修改的现有应用程序,我正在使用以下依赖项:

  path_provider: ^2.0.8
  http: ^0.13.4
  html: ^0.15.0
  custom_pop_up_menu: ^1.2.2
  share: ^2.0.4
  connectivity: ^3.0.6
  flutter_swiper: ^1.1.6
Run Code Online (Sandbox Code Playgroud)

出现错误后,我什至创建了一个新的空项目并将 dart 文件添加到该项目中,但它现在不起作用。

    Error: Cannot run with sound null safety, because the following dependencies
don't support null safety:

 - package:flutter_swiper
 - package:plugin_platform_interface
 - package:flutter_page_indicator
 - package:transformer_page_view
Run Code Online (Sandbox Code Playgroud)

dart flutter dart-null-safety

-1
推荐指数
1
解决办法
2万
查看次数

参数类型“BannerAd?” 无法分配给参数类型“AdWithView”

我将我的应用程序升级到了 Flutter 2,并使所有内容都为 null 安全。之后,我在实施 Google 移动广告 SDK 时遇到错误。

我遵循了所有文档,据此,尽管文档未更新,但我不应该收到此错误。这是我尝试实现广告的代码。

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:book_rent_app_chapter3/model/order.dart';
import 'package:book_rent_app_chapter3/provider/user.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';


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

  @override
  State<OrdersScreen> createState() => _OrdersScreenState();
}

class _OrdersScreenState extends State<OrdersScreen> {
  BannerAd? _bannerAd;

  @override
  void initState() {
    super.initState();
    _bannerAd = BannerAd(
      adUnitId: BannerAd.testAdUnitId,
      request: AdRequest(),
      size: AdSize.banner,
      listener: BannerAdListener(
        onAdLoaded: (Ad ad) {
          print('$BannerAd loaded.');
        },
        onAdFailedToLoad: (Ad ad, LoadAdError error) {
          print('$BannerAd failedToLoad: $error');
        },
        onAdOpened: (Ad ad) => …
Run Code Online (Sandbox Code Playgroud)

flutter google-mobile-ads firebase-admob dart-null-safety flutter2.0

-1
推荐指数
1
解决办法
971
查看次数