为啥 Theme.of(context) 告诉我在取消引用之前检查该值是不是为“null”?
Posted
技术标签:
【中文标题】为啥 Theme.of(context) 告诉我在取消引用之前检查该值是不是为“null”?【英文标题】:Why Theme.of(context) telling me to check that the value isn't 'null' before dereferencing it?为什么 Theme.of(context) 告诉我在取消引用之前检查该值是否为“null”? 【发布时间】:2021-10-12 01:03:40 【问题描述】:我在 MaterialApp 中为我的应用设置了自定义主题。当我尝试使用以下语法时,它显示错误。可能是什么原因?
colors: [
Theme.of(context).primaryColor,
Theme.of(context).accentColor
],
这是我的 ThemeData 到 MaterialApp 构造函数。
class MyApp extends StatelessWidget
@override
Widget build(BuildContext context)
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Medbo',
theme: ThemeData(
primaryColor: AppColor.colorPrimary1,
accentColor: AppColor.colorPrimary2,
),
// home: Home(),
initialRoute: '/',
routes:
'/': (_)=>Home(),
);
当我尝试在我的 Scaffold 中使用它时 ->
return Scaffold(
appBar: AppBar(
flexibleSpace: Container(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.topRight,
colors: [
Theme.of(context).primaryColor, // error showing here
Theme.of(context).accentColor // error showing here
],
),
),
),
在这里我设置了我的颜色属性 ->
import 'package:flutter/material.dart';
class AppColor
static final Color colorPrimary1 = Color.fromRGBO(30,81,126,1.0);
static final Color colorPrimary2 = Color.fromRGBO(28, 117, 149, 1.0);
【问题讨论】:
我想查看你的 AppColor 课程。 嘿,刚刚添加了 AppColor 类 谢谢。你迁移到 nullSafety 了吗? 您在上面显示的代码对我来说运行良好,但您在屏幕截图中显示的内容不同。我建议使用 nullSafety 运算符!或?。 问题出在他的 Flutter 上。重新安装 Flutter 后。一切正常。 【参考方案1】:由于 dart 的新更新,您应该使用 null 安全性。这意味着你必须要么放!要么 ?在变量前面知道它可能为空,或者你应该在使用它之前先初始化它,以避免它以后可能导致的进一步错误。有关更多信息,您可以阅读 dart 的 null-safety 官方文档here。
【讨论】:
以上是关于为啥 Theme.of(context) 告诉我在取消引用之前检查该值是不是为“null”?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 SignalR Context.User.Identity.Name 为空?
为啥使用 Activity 上下文会导致 Context 内存泄漏