微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我得到 user_id 的空值

如何解决我得到 user_id 的空值

我正在尝试使用 Flutter 和 woocommece api 构建一个电子商务应用程序。但是当我尝试按下 addtocart 按钮时,我得到了:

products:List (1 item)
userId:null
hashCode:383444147
runtimeType:Type (CartRequestModel)

我得到了产品,但我没有得到 userId。

这是我的 config.dart:

class Config {
  static String key = "ck_xxxxxxxxxxxxxxxxxxxxxxxxxx";
  static String secret = "cs_xxxxxxxxxxxxxxxxxxxx7dc9feb";
  static String url = "https://gngbd.xyz/wp-json/wc/v3";
  static String customerURL = "/customers";
  static String tokenUR = "https://gngbd.xyz/wp-json/jwt-auth/v1/token";
  static String categoryURL = "/products/categories";
  static String productsURL = "/products";
  static String todayOffersTagId = "20";
  static String addToCartURL = "/addtocart";
  static String cartURL = "/cart";
  static String userId = "4";
}

这是我的cart_provider.dart:

import 'package:Flutter/material.dart';
import 'package:grocerry/api_service.dart';
import 'package:grocerry/models/cart_request_model.dart';
import 'package:grocerry/models/cart_response_model.dart';

class CartProvider with ChangeNotifier {
  ApiService apiService;

  List<CartItem> _cartItems;

  List<CartItem> get CartItems => _cartItems;
  double get totalRecords => _cartItems.length.todouble();

  CartProvider() {
    apiService = new ApiService();
    // ignore: deprecated_member_use
    _cartItems = new List<CartItem>();
  }

  void resetStreams() {
    apiService = new ApiService();
    // ignore: deprecated_member_use
    _cartItems = new List<CartItem>();
  }

  void addToCart(CartProducts product,Function onCallBack) async {
    CartRequestModel requestModel = new CartRequestModel();
    // ignore: deprecated_member_use
    requestModel.products = new List<CartProducts>();

    if (_cartItems == null) resetStreams();

    _cartItems.forEach((element) {
      requestModel.products.add(new CartProducts(
          productId: element.productId,quantity: element.qty));
    });

    var isProductExists = requestModel.products.firstWhere(
        (prd) => prd.productId == product.productId,orElse: () => null);

    if (isProductExists != null) {
      requestModel.products.remove(isProductExists);
    }

    requestModel.products.add(product);

    await apiService.addToCart(requestModel).then((cartResponseModel) {
      if (cartResponseModel.data != null) {
        _cartItems = [];
        _cartItems.addAll(cartResponseModel.data);
      }
      onCallBack(cartResponseModel);
      notifyListeners();
    });
  }
}

在这里我尝试构建一个 addtocart 函数调用了 api_service.dart 文件

这是我的 ApiService.dart 代码

Future<CartResponseModel> addToCart(CartRequestModel model) async {
    model.userId = int.parse(Config.userId);

    CartResponseModel responseModel;

    try {
      var response = await dio().post(
        Config.url + Config.addToCartURL,data: model.toJson(),options: new Options(
          headers: {
            HttpHeaders.contentTypeHeader: "application/json",},),);
      if (response.statusCode == 200) {
        responseModel = CartResponseModel.fromJson(response.data);
      }
    } on dioError catch (e) {
      // print(e.message);

      if (e.response.statusCode == 404) {
        print(e.response.statusCode);
      } else {
        print(e.message);
        print(e.request);
      }
    }
    return responseModel;
  }

  Future<CartResponseModel> getCartItems() async {
    CartResponseModel responseModel;

    try {
      String url = Config.url +
          Config.cartURL +
          "?user_id=${Config.userId}&consumer_key=${Config.key}&consumer_secret=${Config.secret}";

      print(url);

      var response = await dio().post(
        url,);

      if (response.statusCode == 200) {
        responseModel = CartResponseModel.fromJson(response.data);
      }
    } on dioError catch (e) {
      print(e.message);
    }
    return responseModel;
  }

我也有两个模型,一个用于购物车请求,另一个用于购物车响应模型,我也提供此代码

这是我的 CartRequest.dart

class CartRequestModel {
  int userId;
  List<CartProducts> products;

  CartRequestModel({this.userId,this.products});

  CartRequestModel.fromJson(Map<String,dynamic> json) {
    userId = json['user_id'];
    if (json['products'] != null) {
      // ignore: deprecated_member_use
      products = new List<CartProducts>();
      json['products'].forEach((v) {
        products.add(new CartProducts.fromJson(v));
      });
    }
  }

  Map<String,dynamic> toJson() {
    final Map<String,dynamic> data = new Map<String,dynamic>();
    data['user_id'] = this.userId;
    if (this.products != null) {
      data['products'] = this.products.map((v) => v.toJson()).toList();
    }
    return data;
  }
}

class CartProducts {
  int productId;
  int quantity;

  CartProducts({this.productId,this.quantity});

  CartProducts.fromJson(Map<String,dynamic> json) {
    productId = json['product_id'];
    quantity = json['quantity'];
  }

  Map<String,dynamic>();
    data['product_id'] = this.productId;
    data['quantity'] = this.quantity;
    return data;
  }
}

这是我的 CartResponse 模型,下面是我的代码,请检查是否需要:

class CartResponseModel {
  bool status;
  List<CartItem> data;

  CartResponseModel({this.status,this.data});

  CartResponseModel.fromJson(Map<String,dynamic> json) {
    status = json['status'];
    if (json['data'] != null) {
      // ignore: deprecated_member_use
      data = new List<CartItem>();
      json['data'].forEach((v) {
        data.add(new CartItem.fromJson(v));
      });
    }
  }

  Map<String,dynamic>();
    data['status'] = this.status;
    if (this.data != null) {
      data['data'] = this.data.map((v) => v.toJson()).toList();
    }
    return data;
  }
}

class CartItem {
  int productId;
  String productName;
  String productRegularPrice;
  String productsalePrice;
  String thumbNail;
  int qty;
  double linetotal;
  double linesubTotal;

  CartItem(
      {this.productId,this.productName,this.productRegularPrice,this.productsalePrice,this.thumbNail,this.qty,this.linetotal,this.linesubTotal});

  CartItem.fromJson(Map<String,dynamic> json) {
    productId = json['product_id'];
    productName = json['product_name'];
    productRegularPrice = json['product_regular_price'];
    productsalePrice = json['product_sale_price'];
    thumbNail = json['thumbnail'];
    qty = json['qty'];
    linesubTotal = double.parse(json['line_subtotal'].toString());
    linetotal = double.parse(json['line_total'].toString());
  }

  Map<String,dynamic>();
    data['product_id'] = this.productId;
    data['product_name'] = this.productName;
    data['product_regular_price'] = this.productRegularPrice;
    data['product_sale_price'] = this.productsalePrice;
    data['thumbnail'] = this.thumbNail;
    data['qty'] = this.qty;
    data['line_subtotal'] = this.linesubTotal;
    data['line_total'] = this.linetotal;

    return data;
  }
}

解决方法

您需要登录,然后进行测试

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。