【问题标题】:Flutter/Dart - Null Check Error with data provided by PageViewBuilderFlutter/Dart - PageViewBuilder 提供的数据的空值检查错误
【发布时间】:2021-09-16 04:42:41
【问题描述】:

PageViewBuilder 提供的数据出现以下 nullcheck 错误;

The following _CastError was thrown building:
Null check operator used on a null value

When the exception was thrown, this was the stack: 
#0      _StageBuilderState.createViewItem (package:speakoholic/screens/mainStage.dart:488:161)
#1      _StageBuilderState.build.<anonymous closure> (package:speakoholic/screens/mainStage.dart:138:18)

调用此函数时第488行是speakcraft.tagname!

child: editIcon(
       context: context, 
       userid:speakcraft.userid!, 
       audioid:speakcraft.audioid!, 
       title: speakcraft.title!, 
       tagname:speakcraft.tagname!),

第 138 行是createViewItem

   PageView.builder(
    itemCount: widget.speakcrafts.length,        
    itemBuilder: (context, int currentIndex) {
      return createViewItem(widget.speakcrafts[currentIndex], context, currentIndex, widget.speakcrafts.length );
    },       
  ); 

这里是函数;

Widget editIcon({
  required BuildContext? context, 
  required int? userid, 
  required int? audioid, 
  required String? title, 
  required String? tagname}) {
  return
    FutureBuilder<int?>(                       
        ///some stuff
    );
}

如何解决这些 nullcheck 错误?

【问题讨论】:

    标签: flutter dart flutter-pageview null-check


    【解决方案1】:

    问题是您试图通过使用Bang ! 运算符(也称为空断言运算符)来使用不可为空的值来消除可空性:tagname:speakcraft.tagname!

    另一方面,您的属性可以为空,因为String? tagname 意味着tagname 可以是null

    因此,为了避免这种情况,您可以更改 editIcon 方法:

    editIcon(
       ...
       tagname:speakcraft?.tagname ?? 'some default value'),
    

    【讨论】:

      猜你喜欢
      • 2022-01-11
      • 2021-11-10
      • 2023-03-18
      • 1970-01-01
      • 2019-01-04
      • 2021-08-30
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      相关资源
      最近更新 更多