扑动 ontap 错误 ontap 停止工作

Posted

技术标签:

【中文标题】扑动 ontap 错误 ontap 停止工作【英文标题】:flutter ontap error ontap stopped working 【发布时间】:2021-11-18 20:18:06 【问题描述】:

在 ontap 中添加 if 语句后,flutter 按钮停止工作时出现 null 错误,这是我的颤振代码

import 'package:efood_multivendor/controller/product_controller.dart';
import 'package:efood_multivendor/util/dimensions.dart';
import 'package:flutter/material.dart';
import 'package:get/get_core/src/get_main.dart';
import 'package:get/get_instance/src/extension_instance.dart';
import 'package:get/get_utils/src/extensions/internacionalization.dart';

import 'custom_snackbar.dart';

class QuantityButton extends StatelessWidget 
  final bool isIncrement;
  final Function onTap;
  final int quantity;
  final int stock;
  QuantityButton(
      @required this.isIncrement,
      @required this.onTap,
      @required this.quantity,
      @required this.stock);

  @override
  Widget build(BuildContext context) 
    return InkWell(
       onTap : onTap(
        if (!isIncrement && quantity > 1) 
          Get.find<ProductController>().setQuantity(false),
         else if (isIncrement) 
          if (quantity < stock) 
            Get.find<ProductController>().setQuantity(true),
           else 
            showCustomSnackBar('out_of_stock'.tr),
          
        
      ),
      child: Container(
        height: 22,
        width: 22,
        margin: EdgeInsets.symmetric(horizontal: Dimensions.PADDING_SIZE_SMALL),
        decoration: BoxDecoration(
          shape: BoxShape.circle,
          border: Border.all(
              width: 1,
              color: isIncrement
                  ? Theme.of(context).primaryColor
                  : Theme.of(context).disabledColor),
          color: isIncrement
              ? Theme.of(context).primaryColor
              : Theme.of(context).disabledColor.withOpacity(0.2),
        ),
        alignment: Alignment.center,
        child: Icon(
          isIncrement ? Icons.add : Icons.remove,
          size: 15,
          color: isIncrement
              ? Theme.of(context).cardColor
              : Theme.of(context).disabledColor,
        ),
      ),
    );
  

如果我尝试删除 if 语句并添加 onTap:onTap 它正在工作 我收到Another exception was thrown: NoSuchMethodError: '&lt;Unexpected Null Value&gt;' 错误,但按钮仍然不起作用

【问题讨论】:

【参考方案1】:

尝试将其包装在一个函数中以获得清晰的代码。

, 替换为 ; 以结束您的命令

InkWell(
       onTap : ()
        if (!isIncrement && quantity > 1) 
          Get.find<ProductController>().setQuantity(false);
         else if (isIncrement) 
          if (quantity < stock) 
            Get.find<ProductController>().setQuantity(true);
           else 
            showCustomSnackBar('out_of_stock'.tr);
          

祝你好运。

【讨论】:

我收到Another exception was thrown: NoSuchMethodError: '&lt;Unexpected Null Value&gt;' 错误,但按钮仍然不起作用 如果我尝试删除 if 语句并添加 onTap:onTap它正在工作

以上是关于扑动 ontap 错误 ontap 停止工作的主要内容,如果未能解决你的问题,请参考以下文章

GestureDedector 的 onTap 事件不适用于 Sizedbox

无法将 onTap 字段传递给无状态小部件

OnTap 后刷新 Flutter ListView

类/对象 包含属性和方法(方法不是函数)

Flutter 无法获取 ontap 函数来更改布尔列表

当我使用 ListView 时,ListTile OnTap 正在工作。但是当我使用 ListWheelScrollView 它不起作用