颤音:构造感受:意外的字符(在字符1)< br /> ^:用phpmyadmin颤抖
我试图使用XAMPP在phpmyadmin中插入发票。 我测试了后端,工作正常。但是,当我从Flutter应用程序发布时,问题开始。 这是我的代码:
// Model for invoice//
import 'dart:convert';
import 'package:pos/models/purchaseItem.dart';
class PurchaseInvoice {
final String invoiceNumber;
final String invoiceDate;
final double subtotal;
final double discount;
final double tax;
final double amount;
final double outstanding;
final String cKey;
final String supplierCode;
final List<OrderItem> orderItems;
PurchaseInvoice({
required this.invoiceNumber,
required this.invoiceDate,
required this.subtotal,
required this.discount,
required this.tax,
required this.amount,
required this.outstanding,
required this.cKey,
required this.supplierCode,
required this.orderItems,
});
Map<String, dynamic> toMap() {
return {
"invoice_number": invoiceNumber,
"invoice_date": invoiceDate,
"subtotal": subtotal,
"discount": discount,
"tax": tax,
"amount": amount,
"outstanding": outstanding,
"c_key": cKey,
"supplier_code": supplierCode,
"order_items": orderItems,
};
}
factory PurchaseInvoice.fromMap(Map<String, dynamic> map) {
return PurchaseInvoice(
invoiceNumber: map['invoice_number'],
invoiceDate: map['invoice_date'],
subtotal: double.parse(map['subtotal']),
discount: double.parse(map['discount']),
tax: double.parse(map['tax']),
amount: double.parse(map['amount']),
outstanding: double.parse(map['outstanding']),
cKey: map['c_key'],
supplierCode: map['supplier_code'],
orderItems: map['order_items'],
);
}
String toJson() => json.encode(toMap());
factory PurchaseInvoice.fromJson(String source) =>
PurchaseInvoice.fromMap(jsonDecode(source));
}
// Model for invoice Items//
import 'dart:convert';
class OrderItem {
final String itemCode;
final String itemName;
final int quantity;
final double itemPrice;
final double subTotal;
double? discount;
final double amount;
final String supplierCode;
final String cKey;
final String invoiceNumber;
OrderItem({
required this.itemCode,
required this.itemName,
required this.quantity,
required this.itemPrice,
required this.subTotal,
this.discount,
required this.amount,
required this.supplierCode,
required this.cKey,
required this.invoiceNumber,
});
Map<String, dynamic> toMap() {
return {
'item_code': itemCode,
'item_name': itemName,
'quantity': quantity,
'price': itemPrice,
'subtotal': subTotal,
'discount': discount,
'amount': amount,
'supplier_code': supplierCode,
'c_key': cKey,
'invoice_number': invoiceNumber,
};
}
factory OrderItem.fromMap(Map<String, dynamic> map) {
return OrderItem(
itemCode: map['item_code'],
itemName: map['item_name'],
quantity: int.parse(map['quantity']),
itemPrice: double.parse(map['price']),
subTotal: double.parse(map['subTotal']),
discount: double.parse(map['discount']),
amount: double.parse(map['amount']),
supplierCode: map['supplier_code'],
cKey: map['c_key'],
invoiceNumber: map['invoice_number'],
);
}
String toJson() => json.encode(toMap());
factory OrderItem.fromJson(String source) =>
OrderItem.fromMap(jsonDecode(source));
}
// http post request to phpmyadmin database//
void insertPurchaseInvoice({
required BuildContext context,
required String invoiceNumber,
required String invoiceDate,
required double subtotal,
required double discount,
required double tax,
required double amount,
required double outstanding,
required String supplierCode,
required List<OrderItem> orderItems,
}) async {
try {
Company company =
Provider.of<CompanyProvider>(context, listen: false).company;
final String cKey = company.ckey;
PurchaseInvoice newPurchaseInvoice = PurchaseInvoice(
invoiceNumber: invoiceNumber,
invoiceDate: invoiceDate,
subtotal: subtotal,
discount: discount,
tax: tax,
amount: amount,
outstanding: outstanding,
cKey: cKey,
supplierCode: supplierCode,
orderItems: orderItems,
);
print(jsonEncode(newPurchaseInvoice));
print(jsonDecode(jsonEncode(newPurchaseInvoice)));
http.Response response = await http.post(
Uri.parse('$uri/purchase-services/purchase-invoice.php'),
headers: <String, String>{
'Content-Type': 'application/json',
'Charset': 'utf-8'
},
body: newPurchaseInvoice.toJson());
// res = jsonDecode(response.body)['message'].toString();
//-> this is my error handeling widget. working fine///
httpErrorHandle(
context: context,
response: response,
onSuccess: () {
Provider.of<CartProvider>(context, listen: false).clearCart();
});
} catch (e) {
print(e.toString());
// print(res);
}
// funciton to call http post request//
void createPurchaseInvoice({
required String invoiceNumber,
required String invoiceDate,
required double subtotal,
required double discount,
required double tax,
required double amount,
required double outstanding,
required String supplierCode,
required List<OrderItem> orderItems,
}) {
if (orderItems.isEmpty) {
mySnacbar(context, 'No Item Found!');
return;
}
if (invoiceNumber.isEmpty) {
mySnacbar(context, 'Invoice Number is Empty');
return;
}
if (supplierCode.isEmpty) {
mySnacbar(context, 'Supplier is not chosen!');
return;
}
_purchaseServices.insertPurchaseInvoice(
context: context,
invoiceNumber: invoiceNumber,
invoiceDate: invoiceDate,
subtotal: subtotal,
discount: discount,
tax: tax,
amount: amount,
outstanding: outstanding,
supplierCode: supplierCode,
orderItems: orderItems,
);
}
// submit button that will complete the task
// i am using a provider called cart to display items..
CustomButton(
text: 'Submit',
onTap: () {
List<OrderItem> orderItems = [];
// add cart items into order items
for (var i = 0; i < cart.itemCount; i++) {
String itemCode = cart.items.values.toList()[i].code;
String itemName = cart.items.values.toList()[i].title;
int qty = cart.items.values.toList()[i].quantity;
double price = cart.items.values.toList()[i].price;
double discount =
cart.items.values.toList()[i].discount ?? 0.00;
double subtotal = qty * price;
double amount = subtotal - discount;
OrderItem newOrderItem = OrderItem(
itemCode: itemCode,
itemName: itemName,
quantity: qty,
itemPrice: price,
subTotal: subtotal,
discount: discount,
amount: amount,
supplierCode: supplier.supplierCode,
cKey: company.ckey,
invoiceNumber: _invoiceNumber.text,
);
orderItems.add(newOrderItem);
}
createPurchaseInvoice(
invoiceNumber: _invoiceNumber.text,
invoiceDate: _invoiceDate,
subtotal: cart.totalAmount,
discount: discount,
tax: tax,
amount: invTotalAmount,
outstanding: invTotalAmount,
supplierCode: supplier.supplierCode,
orderItems: orderItems,
);
setState(() {
orderItems = [];
});
})
我知道有很多代码。因为我不知道我在哪里做错。
提交发票后,它将成功创建发票。之后,它进入循环(后端),将发票项目插入另一行。在手动测试时都可以正常工作。这些问题仅在颤音中提交时出现。 但是,我检查了通过HTTP申请发送的JSON文件。
强的文本 扑: “ {“ Invoice_number”:“ hy67”,“ Invoice_date”:“ 2022-07-02”,“ subtotal”:45.0,“折扣”:0.0,“税收”:0.0:0.0,“ a安装“:45.0,“杰出”:45.0,“ C_KEY”:“ 145E3520-EB1D-11EC-B95D-09C704B7A660”,“ SUESTIER_CODE”:“ SUP 02“,“ order_items”:[“ {\” item_code \“:\” item 03 \“,\” item_name \“:\” item三\“,\”量\“:1,\” price \“:45.0,\” subtotal \ \“:45.0,\” discount \“:0.0,\”量\“ sup ” hy67 \“}”}
02 \“,\” c_key \“:\” 145E3520-EB1D-11EC-B95D-09C704B7A6660 \“,\” Invoice_number \“:\”:\“ hy67 \
扑: {“ Invoice_number”:“ HY67”,“ Invoice_date”:“ 2022-07-02”,“ subtotal”:45.0,“折扣”:0.0,“税”:0.0:0.0,“ AM Ount“:45.0,“杰出”:45.0,“ C_KEY”:“ 145E3520-EB1D-11EC-B95D-09C704B7A660”,“ supplier_code”:“ sup 02“,“ order_items”:[“ {“ item_code”:“ item 03”,“ item_name”:“ item三”,“数量”:1,“价格”:45.0,“ subtotal”:45.0,“折扣”: 0.0,“量”:45.0,“ supplier_code”:“ sup 02“,” C_KEY”:“ 145E3520-EB1D-11EC-B95D-09C704B7A660”,“ INVOICE_NUMBER”:“ HY67”}“}
//这是JSON.DECODE(JSON.DECODE(JSON.END)
I tried to insert invoice in phpmyadmin using xampp.
I tested backend, is working fine. but problem begins when i post from flutter app.
here is my codes:
// Model for invoice//
import 'dart:convert';
import 'package:pos/models/purchaseItem.dart';
class PurchaseInvoice {
final String invoiceNumber;
final String invoiceDate;
final double subtotal;
final double discount;
final double tax;
final double amount;
final double outstanding;
final String cKey;
final String supplierCode;
final List<OrderItem> orderItems;
PurchaseInvoice({
required this.invoiceNumber,
required this.invoiceDate,
required this.subtotal,
required this.discount,
required this.tax,
required this.amount,
required this.outstanding,
required this.cKey,
required this.supplierCode,
required this.orderItems,
});
Map<String, dynamic> toMap() {
return {
"invoice_number": invoiceNumber,
"invoice_date": invoiceDate,
"subtotal": subtotal,
"discount": discount,
"tax": tax,
"amount": amount,
"outstanding": outstanding,
"c_key": cKey,
"supplier_code": supplierCode,
"order_items": orderItems,
};
}
factory PurchaseInvoice.fromMap(Map<String, dynamic> map) {
return PurchaseInvoice(
invoiceNumber: map['invoice_number'],
invoiceDate: map['invoice_date'],
subtotal: double.parse(map['subtotal']),
discount: double.parse(map['discount']),
tax: double.parse(map['tax']),
amount: double.parse(map['amount']),
outstanding: double.parse(map['outstanding']),
cKey: map['c_key'],
supplierCode: map['supplier_code'],
orderItems: map['order_items'],
);
}
String toJson() => json.encode(toMap());
factory PurchaseInvoice.fromJson(String source) =>
PurchaseInvoice.fromMap(jsonDecode(source));
}
// Model for invoice Items//
import 'dart:convert';
class OrderItem {
final String itemCode;
final String itemName;
final int quantity;
final double itemPrice;
final double subTotal;
double? discount;
final double amount;
final String supplierCode;
final String cKey;
final String invoiceNumber;
OrderItem({
required this.itemCode,
required this.itemName,
required this.quantity,
required this.itemPrice,
required this.subTotal,
this.discount,
required this.amount,
required this.supplierCode,
required this.cKey,
required this.invoiceNumber,
});
Map<String, dynamic> toMap() {
return {
'item_code': itemCode,
'item_name': itemName,
'quantity': quantity,
'price': itemPrice,
'subtotal': subTotal,
'discount': discount,
'amount': amount,
'supplier_code': supplierCode,
'c_key': cKey,
'invoice_number': invoiceNumber,
};
}
factory OrderItem.fromMap(Map<String, dynamic> map) {
return OrderItem(
itemCode: map['item_code'],
itemName: map['item_name'],
quantity: int.parse(map['quantity']),
itemPrice: double.parse(map['price']),
subTotal: double.parse(map['subTotal']),
discount: double.parse(map['discount']),
amount: double.parse(map['amount']),
supplierCode: map['supplier_code'],
cKey: map['c_key'],
invoiceNumber: map['invoice_number'],
);
}
String toJson() => json.encode(toMap());
factory OrderItem.fromJson(String source) =>
OrderItem.fromMap(jsonDecode(source));
}
// http post request to phpmyadmin database//
void insertPurchaseInvoice({
required BuildContext context,
required String invoiceNumber,
required String invoiceDate,
required double subtotal,
required double discount,
required double tax,
required double amount,
required double outstanding,
required String supplierCode,
required List<OrderItem> orderItems,
}) async {
try {
Company company =
Provider.of<CompanyProvider>(context, listen: false).company;
final String cKey = company.ckey;
PurchaseInvoice newPurchaseInvoice = PurchaseInvoice(
invoiceNumber: invoiceNumber,
invoiceDate: invoiceDate,
subtotal: subtotal,
discount: discount,
tax: tax,
amount: amount,
outstanding: outstanding,
cKey: cKey,
supplierCode: supplierCode,
orderItems: orderItems,
);
print(jsonEncode(newPurchaseInvoice));
print(jsonDecode(jsonEncode(newPurchaseInvoice)));
http.Response response = await http.post(
Uri.parse('$uri/purchase-services/purchase-invoice.php'),
headers: <String, String>{
'Content-Type': 'application/json',
'Charset': 'utf-8'
},
body: newPurchaseInvoice.toJson());
// res = jsonDecode(response.body)['message'].toString();
//-> this is my error handeling widget. working fine///
httpErrorHandle(
context: context,
response: response,
onSuccess: () {
Provider.of<CartProvider>(context, listen: false).clearCart();
});
} catch (e) {
print(e.toString());
// print(res);
}
// funciton to call http post request//
void createPurchaseInvoice({
required String invoiceNumber,
required String invoiceDate,
required double subtotal,
required double discount,
required double tax,
required double amount,
required double outstanding,
required String supplierCode,
required List<OrderItem> orderItems,
}) {
if (orderItems.isEmpty) {
mySnacbar(context, 'No Item Found!');
return;
}
if (invoiceNumber.isEmpty) {
mySnacbar(context, 'Invoice Number is Empty');
return;
}
if (supplierCode.isEmpty) {
mySnacbar(context, 'Supplier is not chosen!');
return;
}
_purchaseServices.insertPurchaseInvoice(
context: context,
invoiceNumber: invoiceNumber,
invoiceDate: invoiceDate,
subtotal: subtotal,
discount: discount,
tax: tax,
amount: amount,
outstanding: outstanding,
supplierCode: supplierCode,
orderItems: orderItems,
);
}
// submit button that will complete the task
// i am using a provider called cart to display items..
CustomButton(
text: 'Submit',
onTap: () {
List<OrderItem> orderItems = [];
// add cart items into order items
for (var i = 0; i < cart.itemCount; i++) {
String itemCode = cart.items.values.toList()[i].code;
String itemName = cart.items.values.toList()[i].title;
int qty = cart.items.values.toList()[i].quantity;
double price = cart.items.values.toList()[i].price;
double discount =
cart.items.values.toList()[i].discount ?? 0.00;
double subtotal = qty * price;
double amount = subtotal - discount;
OrderItem newOrderItem = OrderItem(
itemCode: itemCode,
itemName: itemName,
quantity: qty,
itemPrice: price,
subTotal: subtotal,
discount: discount,
amount: amount,
supplierCode: supplier.supplierCode,
cKey: company.ckey,
invoiceNumber: _invoiceNumber.text,
);
orderItems.add(newOrderItem);
}
createPurchaseInvoice(
invoiceNumber: _invoiceNumber.text,
invoiceDate: _invoiceDate,
subtotal: cart.totalAmount,
discount: discount,
tax: tax,
amount: invTotalAmount,
outstanding: invTotalAmount,
supplierCode: supplier.supplierCode,
orderItems: orderItems,
);
setState(() {
orderItems = [];
});
})
I know there are lots of codes. because I do not have any clue where am i doing wrong.
Once I submit for the invoice, it successfully create the invoice. after that it goes in a loop (backend) where invoice items are inserted in another rows. while testing manually all were working fine. the problems shows up while submiting from flutter only.
however, I checked what json file it sending through http reques.
strong text
flutter: "{"invoice_number":"hy67","invoice_date":"2022-07-02","subtotal":45.0,"discount":0.0,"tax":0.0,"amount":45.0,"outstanding":45.0,"c_key":"145e3520-eb1d-11ec-b95d-09c704b7a660","supplier_code":"Sup 02","order_items":["{\"item_code\":\"item 03\",\"item_name\":\"item three\",\"quantity\":1,\"price\":45.0,\"subtotal\":45.0,\"discount\":0.0,\"amount\":45.0,\"supplier_code\":\"Sup 02\",\"c_key\":\"145e3520-eb1d-11ec-b95d-09c704b7a660\",\"invoice_number\":\"hy67\"}"]}"
// this is json.encode(newPurchaseInvoice)
flutter: {"invoice_number":"hy67","invoice_date":"2022-07-02","subtotal":45.0,"discount":0.0,"tax":0.0,"amount":45.0,"outstanding":45.0,"c_key":"145e3520-eb1d-11ec-b95d-09c704b7a660","supplier_code":"Sup 02","order_items":["{"item_code":"item 03","item_name":"item three","quantity":1,"price":45.0,"subtotal":45.0,"discount":0.0,"amount":45.0,"supplier_code":"Sup 02","c_key":"145e3520-eb1d-11ec-b95d-09c704b7a660","invoice_number":"hy67"}"]}
// this is json.decode(json.encode(newPurchaseInvoice))
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我发现了问题和解决方案。
问题:购买模型。
解决方案:在模型中需要映射order_items的列表。
I have found the problem and solutions.
problem: Purchase Model.
solution: in the model need to map the list of order_items.