#php #flutter #flutter-layout #flutter-web #flutter-test
Вопрос:
теперь, начиная с трех дней, и я пытаюсь заставить его работать (данные json и данные Flutter), кажется, все работает нормально, и я получил данные php json и декодирую их .. но все еще не могу понять, как динамически поместить его в строки, доступные для данных !!!
это основной код для обработки http-запроса и декодирования данных json
это данные json перед их декодированием ..
{"results":[{"ID":"1","TYPE_ID":"11","TYPE":"REPORT","SUB":"GOING HOLIDAY","USER_ID":"11","CREATE_DATE":"2021-05-10"},{"ID":"2","TYPE_ID":"11","TYPE":"COMMENTS","SUB":"GOING
HOLIDAY","USER_ID":"11","CREATE_DATE":"2021-05-10"}]}
и это после того, как закодируете его
{results: [{ID: 1, TYPE_ID: 11, TYPE: REPORT, SUB: GOING HOLIDAY, USER_ID: 11, CREATE_DATE: 2021-05-10}, {ID: 2, TYPE_ID: 11, TYPE: COMMENTS, SUB: GOING HOLIDAY, USER_ID: 11,CREATE_DATE: 2021-05-10}]}
функция для работы с http и json
Future noti_table() async {
try {
var url = Uri.parse('192.168.1.111');
http.Response response = await http.get(url);
if (response.statusCode == 200) {
//return response.body;
// var data = json.decode(utf8.decode(response.bodyBytes));
print(response.body);
final responseJson = jsonDecode(response.body);
print(responseJson);
Sale sale = new Sale.fromJson(responseJson);
return sale;
//print("Result: ${sale.results}");
//return sale;
}
} catch (e) {
print(e);
return null;
}
}
класс для работы со структурой json
class Sale {
final List<Results> results;
Sale({this.results});
factory Sale.fromJson(Map<String, dynamic> json) {
return Sale(
results: parsedResult(json),
);
}
static List<Results> parsedResult(resultJson) {
var list = resultJson['results'] as List;
List<Results> resultList =
list.map((data) => Results.fromJson(data)).toList();
return resultList;
}
}
class Results {
final String id;
final String type;
Results({this.id, this.type});
factory Results.fromJson(Map<String, dynamic> json) {
//print(json['TYPE']);
return Results(
id: json['ID'],
type: json['TYPE'],
);
}
}
note please , for now i only want to show ID, and Type.
Future get_table_info() async {
var output = await noti_table();
return output;
}
and this code for view that datatable using FutureBuilder , the issue code » return SingleChildScrollView(»
Widget build(BuildContext context) {
return Container(
child: FutureBuilder(
future: get_table_info(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.data == null) {
return Container(child: Center(child: CircularProgressIndicator()));
} else {
return SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: SingleChildScrollView(
child: DataTable(
columns: [
DataColumn(label: Text('ID'), tooltip: 'ID'),
DataColumn(label: Text('Type'), tooltip: 'Type'),
],
rows: snapshot.data
.map((data) =>
// we return a DataRow every time
DataRow(
// List<DataCell> cells is required in every row
cells: [
DataCell(Text('HOW TO show id HER')),
DataCell(Text('HOW TO show TYPE HER')),
]))
.toList(),
),
),
);
}
},
),
);
}
error i receive after start using Future builder .. .
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following NoSuchMethodError was thrown building FutureBuilder<dynamic>(dirty, state:
_FutureBuilderState<dynamic>#6bf96):
'map'
Dynamic call of null.
Receiver: Instance of 'Sale'
Arguments: [Instance of '(dynamic) => DataRow']
The relevant error-causing widget was:
FutureBuilder<dynamic>
file:///C:/Users/dhd20/Desktop/2022/op web/flutter_application_1/lib/screens/NotiTable.dart:29:14
When the exception was thrown, this was the stack:
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 236:49 throw_
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 721:3 defaultNoSuchMethod
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart 61:12 noSuchMethod
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 716:31 noSuchMethod
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 270:9 _checkAndCall
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 388:10 callMethod
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 392:5 dsend
packages/flutter_application_1/screens/NotiTable.dart 78:10 <fn>
packages/flutter/src/widgets/async.dart 773:48 build
packages/flutter/src/widgets/framework.dart 4612:27 build
packages/flutter/src/widgets/framework.dart 4495:15 performRebuild
packages/flutter/src/widgets/framework.dart 4667:11 performRebuild
packages/flutter/src/widgets/framework.dart 4189:5 rebuild
packages/flutter/src/widgets/framework.dart 2694:31 buildScope
packages/flutter/src/widgets/binding.dart 873:9 drawFrame
packages/flutter/src/rendering/binding.dart 319:5 [_handlePersistentFrameCallback]
packages/flutter/src/scheduler/binding.dart 1144:15 [_invokeFrameCallback]
packages/flutter/src/scheduler/binding.dart 1082:9 handleDrawFrame
packages/flutter/src/scheduler/binding.dart 998:5 [_handleDrawFrame]
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/platform_dispatcher.dart 896:13 invoke
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/platform_dispatcher.dart 145:5 invokeOnDrawFrame
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine.dart 259:45 <fn>
════════════════════════════════════════════════════════════════════════════════════════════════════
как можно отобразить тип , идентификатор в строках и отключить этот вопрос красным цветом ..
любые советы приветствуются
с уважением