为什么我会遇到这个错误:警告:空安全操作符 '??' 的操作数类型为 'Color',不包括 null。

32

我正在使用这个软件包

flutter_datetime_picker: ^1.5.1

这是我的代码

String _date = "Please pick Age";

  Widget _buildage() {
    return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
      Text(
        'Enter Age',
        style: kLabelStyle,
      ),
      SizedBox(height: 10.0),
      Container(
        decoration: kBoxDecorationStyle,
        alignment: Alignment.centerLeft,
        height: 70.0,
        child: Container(
          child: TextFormField(
            initialValue: "haaas",
            validator: (val) {
              if (val.isEmpty) {
                return 'Enter yout Age';
              }
              if (val.length < 4) {
                return 'Enter a username minimun 4 chars long';
              }

              return null;
            },
            onChanged: (val) {
              setState(() => age = val);
            },
            onTap: () {
              DatePicker.showDatePicker(context,
                  theme: DatePickerTheme(
                    containerHeight: 210.0,
                  ),
                  showTitleActions: true,
                  minTime: DateTime(2000, 1, 1),
                  maxTime: DateTime(2022, 12, 31), onConfirm: (date) {
                setState(() {
                  _date = '${date.year} - ${date.month} - ${date.day}';
                });
              }, currentTime: DateTime.now(), locale: LocaleType.en);
            },
            readOnly: true,
            decoration: InputDecoration(
              border: InputBorder.none,
              contentPadding: EdgeInsets.only(top: 14.0),
              prefixIcon: Icon(
                Icons.date_range_rounded,
                color: Colors.white,
                size: 28,
              ),
              hintText: " $_date",
              hintStyle: kHintTextStyle,
            ),
          ),
        ),
      ),
    ]);
  }

错误或警告是这样的

../../flutter/.pub-cache/hosted/pub.dartlang.org/flutter_datetime_picker-1.5.1/lib/flutter_datetime_picker.dart:311:32: Warning: Operand of null-aware operation '??' has type 'Color' which excludes null.
 - 'Color' is from 'dart:ui'.
                  color: theme.backgroundColor ?? Colors.white,
                               ^

一切运行正常,但不知道为什么会出现这个错误。如果您需要更多信息,请留言。希望有人知道如何修复它。如果您需要任何其他信息,请也留言。

4个回答

33

那不是一个错误,而是来自flutter_datetime_picker包的警告,表明它的代码还没有完全符合空值安全。基本上,它在万一theme.backgroundColor为空时使用??运算符,但现在theme.backgroundColor被标记为非空,该运算符是多余的。虽然弹出警告很烦人,但它不会以任何方式影响您的应用程序。

请注意,在软件包存储库的主分支中,代码已经得到了正确更新,因此下次发布软件包时,警告将消失。

编辑:从版本1.5.1开始,该软件包现在正式支持空值安全。修复是通过拉请求添加的,1.5.1发布后,下一个版本(1.5.2或其他版本)应该解决此问题。

编辑2:距离最后一次提交和1.5.1发布已经过去将近一年,可以认为这个软件包已被放弃。值得注意的是,除了我不知道的特定功能之外,内置的Flutter库中的CupertinoDatePicker现在已经使该软件包过时了。

对于那些出于某种原因想继续使用此软件包而不显示警告的人,可以将软件包依赖关系更改为指向存储库的主分支(来源:[1] [2]):

flutter_datetime_picker:
    git:
      url: https://github.com/AlexHartford/flutter_datetime_picker.git
      ref: master
值得注意的是,如果软件包开发者带着新提交回来,这种方法可能会使您的应用程序面临破坏性变化,并且如果仓库成为恶意活动的目标,则可能会暴露漏洞。您还将失去使用 pub 包管理器所带来的好处,例如版本管理和自动升级。因此,我强烈建议仍在使用该软件包的任何人迁移到 Flutter 的 CupertinoDatePicker

我正在使用1.5.1版本(最新版本)。但是我仍然收到这个警告... - Jay Tillu
1
@JayTillu 我查看了提交的git历史记录,发现这个警告是在1.5.1发布后通过拉取请求进行了修正,因此1.5.2或其他版本应该已经修复了这个问题。 - Abion47
一年过去了,仍然没有修复的新版本... - Justin
@Justin 可能这个包已经被放弃了,或者开发者只是在睡觉。最后一次更新是在14个月前,最后一次提交是在7月7日之前的一年前。我看到你和其他人在仓库上开了这个问题,但不幸的是我们真正能做的就只有这些了。值得注意的是,对于那些只想要一个日期时间选择器的人来说,这个包是多余的,因为Flutter现在内置了一个功能强大的选择器(包括CupertinoDatePicker,以匹配iOS的美学)。 - Abion47

15

这只是一个警告,所以不需要担心。它已经通过此PR被修复https://github.com/Realank/flutter_datetime_picker/pull/236,但似乎没有被包含在最新的部署中。

如果您愿意,从master分支拉取而不是pub.dev应该可以解决问题,直到部署新版本为止。

flutter_datetime_picker:
    git:
      url: https://github.com/Realank/flutter_datetime_picker.git
      ref: master

8
如果你想在新版本部署之前摆脱它,只需将color: theme.backgroundColor ?? Colors.white这一行改为color:theme.backgroundColor,或者从主分支拉取包。
flutter_datetime_picker:
    git: https://github.com/Realank/flutter_datetime_picker.git

4

在DatePickerTheme中添加Color? backgroundColor;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接