当前位置: 首页 > 知识库问答 >
问题:

方法'*'是在null上调用的。接收方:null尝试调用:*(null)

凌钊
2023-03-14
    class _BillDetailsWidgetState extends State<BillDetailsWidget> {
  _BillDetailsWidgetState(
      {this.qtyCount,
      this.singleServicePrice,
      this.itemsTotal,
      this.totalPayablePrice});

  int qtyCount = 10;
  int singleServicePrice = 100;
  int itemsTotal;
  int totalPayablePrice = 0;

  String cartPriceTotal() {
    totalPayablePrice = qtyCount * singleServicePrice;
    return totalPayablePrice.toString();
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      margin: EdgeInsets.only(top: 10.0),
      color: Colors.white,
      child: Container(
        color: Colors.white,
        padding:
            EdgeInsets.only(top: 20.0, bottom: 20.0, left: 20.0, right: 20.0),
        child: Column(
          children: [
            Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Text(
                  'Bill Details:',
                  style: kTextStyle,
                ),
                SizedBox(
                  height: 10,
                ),
                Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: [
                    Text(
                      'Item(s) Total',
                      style: kOtherTextStyle,
                    ),
                    Text(
                      '249',
                      style: kOtherTextStyle,
                    ),
                  ],
                ),
                Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: [
                    Text(
                      'Safety & Conveyance Charges',
                      style: kOtherTextStyle,
                    ),
                    Text(
                      '₹ 80',
                      style: kOtherTextStyle,
                    ),
                  ],
                ),
                SizedBox(
                  height: 10,
                ),
                Container(
                  height: 1,
                  color: Colors.grey,
                ),
                Row(
                  mainAxisAlignment: MainAxisAlignment.end,
                  children: [
                    Text(
                      cartPriceTotal(),
                      style: kOtherTextStyle,
                    ),
                  ],
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}

共有1个答案

唐兴思
2023-03-14

您必须在构造函数方法中而不是字段本身中设置默认值。否则,如果您没有在创建_BillDetailsWidgetState构造函数的地方提供值,这些值将全部设置为null。当然,乘以null值会导致错误。

dart prettyprint-override">class BillDetailsWidget extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => _BillDetailsWidgetState();
}

在您的情况下,实际上就像是像这样调用状态构造函数:

class BillDetailsWidget extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => _BillDetailsWidgetState(
    qtyCount: null,
    singleServicePrice: null,
    itemsTotal: null,
    totalPayablePrice: null,
  );
}

因此,这解决了这个问题:

  _BillDetailsWidgetState(
      {this.qtyCount = 10,
      this.singleServicePrice = 100,
      this.itemsTotal,
      this.totalPayablePrice = 0});


  int qtyCount;
  int singleServicePrice;
  int itemsTotal;
  int totalPayablePrice;
  //... omitted for brevity
class BillDetailsWidget extends StatelessWidget {
  final int qtyCount;
  final int singleServicePrice;

  const BillDetailsWidget({
    Key key,
    @required this.qtyCount,
    @required this.singleServicePrice,
  })  : assert(qtyCount != null),
        assert(singleServicePrice != null),
        super(key: key);

  String cartPriceTotal() {
    return (qtyCount * singleServicePrice).toString();
  }

  @override
  Widget build(BuildContext context) {
    // ... omitted for brevity
  }
}
 类似资料:
  • 此错误“”getter'uid'在null上被调用。receiver:null尝试调用:uid“ 退出按钮: 控制台: widgets库捕获的异常接收者:null尝试调用:uid 相关的导致错误的小部件是:Qr file://g://androidstudioprojects/facem/lib/screens/home/home.dart:687:67当抛出异常时,这是堆栈:#0 object.

  • 我试图使用API中的数据,但我需要的数据是为不同的请求找到的。在颤栗中有未来。通过这个,我可以请求API的必要部分。我的想法是,我正在努力为火车制定时间表。在这个列车时刻表中,我需要列车号、站台名和到达时间。我正在尝试按照文档和视频中所描述的方式执行所有操作,但我做不到,因为我遇到了一个错误 在这里提问之前,我试着做了这样的事情: 但是它不起作用,给我一个错误: 对null调用了方法“[]”。接收

  • 错误:building Home抛出了以下NoSuchMethodError(脏,依赖项:[MediaQuery],state:_homestate#a6c1f):方法'>'是在null上调用的。接收者:null尝试调用:>(1)

  • 我在使用Flutter注册电子邮件和密码时遇到了问题。我用它来注册新用户,它保存了他们的Firebase身份验证信息,但不会将任何配置文件数据保存到Firebase存储部分。我不确定我在这里做错了什么,我不明白为什么id是空的。一些帮助和指导将真的非常感谢! 这就是我犯的错误 这是来自用户的。飞奔 这是来自注册。飞奔 错误指向用户引用。文档行。 这是Timeline.dart 该错误指向这两个方法

  • 每当我尝试使用firebase auth注册用户时,我的应用程序就会崩溃。我的代码如下:

  • 我创建了一个接口,以便可以在对话和片段之间进行通信。 目标:当用户从对话框中选择任何内容时,应将其显示在文本视图中。 在这个界面中,我创建了一个界面方法,在主活动中调用,并传递用户在对话框中选择的值。与用户选择的值一起,在我的片段中,我创建了一个方法,将文本视图设置为该值。然而,每当我调用该方法时,它总是返回null。 我对日志进行了大量测试,发现通过我的方法传递的值不是空的,一切似乎都按照我想要