在ontap内添加if语句后,颤动按钮停止工作时出现空错误。这是我的颤动代码
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: '<Unexpected Null Value>'错误仍然按钮不工作,也尝试了这个方法,但仍然显示相同和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);
}
} ```发布于 2021-09-26 17:23:33
这是因为onTap参数需要一个VoidCallback对象,您可以通过两种方式声明它:
抛出函数。特定于小部件,不能被其他小部件调用。
onTap : (){
... your code ...
}或者以这种方式声明一个新函数。
void yourFunction(){
... your code ...
}并在您的按钮中使用该函数
onTap : yourFunction第二种方法允许您从不同的Widget调用函数
https://stackoverflow.com/questions/69335833
复制相似问题