两者之间到底有什么区别
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,但是 !. 返回?
我已经有几个月没有在 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) 我尝试使用记录的用户 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) 我有一个想要修改的现有应用程序,我正在使用以下依赖项:
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) 我将我的应用程序升级到了 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