分からないこと
表題の通りですが、FlutterのHttp.postを使用してPHP側に値を投げようとする表題のようなエラーになります。実際のエラーコードは下記です。
E/flutter (26285): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: type 'int' is not a subtype of type 'String' in type cast
試したこと
json.encodeを使用して送るとPHP側で以下のようにKeyに全て値が入るようになったので、エンコードはしていません。
I/flutter (26285): Array
I/flutter (26285): (
I/flutter (26285): [{"id":1,"hoge":"hoge"}] =>
I/flutter (26285): )
またDataLogにあるidをString形で宣言すれば思うような動きになりました。
実際に書いているコード
重要箇所だけ抜粋しています。
dart
1//HttpでPostを投げる処理 2Future<void> onClickButton(DataLog dataLog) async { 3 response = await http.post(requestUrl, 4 body:dataLog.toMap(), 5 headers: {"Content-Type": "application/x-www-form-urlencoded"}); 6 if (response.statusCode == 200) { 7 print(response.body); 8 print("Success"); 9 } else { 10 print("response Error"); 11 } 12}
dart
1class DataLog { 2 int? id; 3 String? hoge; 4 5//<editor-fold desc="Data Methods" defaultstate="collapsed"> 6 7 DataLog({ 8 this.id, 9 this.hoge, 10 }); 11 12 DataLog copyWith({ 13 int? id, 14 String? hoge, 15 }) { 16 return new DataLog( 17 id: id ?? this.id, 18 hoge: hoge ?? this.hoge, 19 ); 20 } 21 22 23 String toString() { 24 return 'DataLog{id: $id, hoge: $hoge}'; 25 } 26 27 28 bool operator ==(Object other) => 29 identical(this, other) || 30 (other is DataLog && 31 runtimeType == other.runtimeType && 32 id == other.id && 33 hoge == other.hoge); 34 35 36 int get hashCode => id.hashCode ^ hoge.hashCode; 37 38 factory DataLog.fromMap(Map<String, dynamic> map) { 39 return new DataLog( 40 id: map['id'] as int?, 41 hoge: map['hoge'] as String?, 42 ); 43 } 44 45 Map<String, dynamic> toMap() { 46 // ignore: unnecessary_cast 47 return { 48 'id': this.id, 49 'hoge': this.hoge, 50 } as Map<String, dynamic>; 51 } 52 53//</editor-fold> 54 55}
このままだとStringで投げるようになってしまうため、分かる方ご教授頂ければ幸いです!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/12 06:51