颤振,我的DataTable和php Json输出问题。。。我解决不了
现在,从三天开始,我正在努力让它工作(json数据和Flatter数据表),看起来一切都很好,我得到了php json数据,我解码了。。但仍然无法找到将其动态放入数据表行的方法 这是处理http请求和解码json数据的主要代码 这是解码前的json数据颤振,我的DataTable和php Json输出问题。。。我解决不了,php,flutter,flutter-layout,flutter-web,flutter-test,Php,Flutter,Flutter Layout,Flutter Web,Flutter Test,现在,从三天开始,我正在努力让它工作(json数据和Flatter数据表),看起来一切都很好,我得到了php json数据,我解码了。。但仍然无法找到将其动态放入数据表行的方法 这是处理http请求和解码json数据的主要代码 这是解码前的json数据 {"results":[{"ID":"1","TYPE_ID":"11","TYPE":"REPORT",
{"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'],
);
}
}
这段代码用于使用FutureBuilder查看数据表,问题代码为“returnsingleChildScrollView(”
小部件构建(构建上下文){
返回容器(
孩子:未来建设者(
未来:获取表格信息(),
生成器:(BuildContext上下文,异步快照){
如果(snapshot.data==null){
返回容器(子对象:中心(子对象:CircularProgressIndicator());
}否则{
返回SingleChildScrollView(
滚动方向:轴水平,
子:SingleChildScrollView(
子:数据表(
栏目:[
DataColumn(标签:Text('ID'),工具提示:'ID'),
DataColumn(标签:Text('Type'),工具提示:'Type'),
],
行:snapshot.data
.map((数据)=>
//我们每次都返回一个数据行
数据行(
//每行都需要列表单元格
单元格:[
数据单元(文本(“如何显示她的id”),
数据单元(文本(“如何显示键入HER”),
]))
.toList(),
),
),
);
}
},
),
);
}
开始使用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%20web/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>
════════════════════════════════════════════════════════════════════════════════════════════════════
══╡ WIDGETS库捕获到异常╞═══════════════════════════════════════════════════════════
生成FutureBuilder时引发了以下NoSuchMethodError(脏,状态:
_FutureBuilderState#6bf96):
“地图”
null的动态调用。
接收人:“销售”实例
参数:[实例'(动态)=>DataRow']
导致错误的相关小部件是:
未来建设者
file:///C:/Users/dhd20/Desktop/2022/op%20web/flutter_application_1/lib/screens/NotiTable.dart:29:14
引发异常时,这是堆栈:
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
包装/颤振应用程序/屏幕/不适用。dart 78:10
packages/flatter/src/widgets/async.dart 773:48构建
packages/flatter/src/widgets/framework.dart 4612:27构建
packages/flatter/src/widgets/framework.dart 4495:15性能构建
packages/flatter/src/widgets/framework.dart 4667:11性能构建
包/flatter/src/widgets/framework.dart 4189:5重建
packages/flatter/src/widgets/framework.dart 2694:31 buildScope
packages/flatter/src/widgets/binding.dart 873:9并条机
packages/flatter/src/rendering/binding.dart 319:5[\u handlePersistentFrameCallback]
packages/flatter/src/scheduler/binding.dart 1144:15[\u invokeFrameCallback]
包裹/flatter/src/scheduler/binding.dart 1082:9手绘框架
软件包/flatter/src/scheduler/binding.dart 998:5[_handleDrawFrame]
C:/b/s/w/ir/cache/builder/src/out/host_debug/flatter_web_sdk/lib/_engine/engine/platform_dispatcher.dart 896:13调用
C:/b/s/w/ir/cache/builder/src/out/host_debug/flatter_web_sdk/lib/_engine/engine/platform_dispatcher.dart 145:5调用绘图框架
C:/b/s/w/ir/cache/builder/src/out/host_debug/flatter_web_sdk/lib/_engine/engine.dart 259:45
═════════════════════════════════════════════════════════════════════════════════════════════?
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(),
),
),
);
}
},
),
);
}
══╡ 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%20web/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>
════════════════════════════════════════════════════════════════════════════════════════════════════