【发布时间】:2021-01-27 18:56:51
【问题描述】:
你好,我是新手,正在尝试使用 mysql db 构建一个颤振应用程序,问题是我有一个带有两个对象的 json 响应,我想将其解析为一个小部件,我真的不知道如何制作他们的类谁能帮帮我:
Json 响应:
{
"folders":[
{
"id":2531,
"name":"MiniOSCE Ihsan",
"img":null,
"haschild":0,
"parentid":1665,
"createdate":"2019-11-26 12:21:27",
"inarchive":0,
"active":1
}
],
"files":[
{
"id":3669,
"name":"Dermatology_Atlas.pdf 16.61MB",
"img":null,
"uploader":"admin",
"url":"http:\/\/msc-mu.com\/..\/uploaded\/130620190Dermatology_Atlas.pdf",
"createdate":"2019-06-13
23:54:41",
"approved":0,
"active":1
},
{
"id":3670,
"name":"Derma-\u062a\u0644\u062e\u064a\u0635.docx 27.88KB",
"img":null,
"uploader":"admin",
"url":"http:\/\/msc-mu.com\/..\/uploaded\/130620190Derma-\u062a\u0644\u062e\u064a\u0635.docx",
"createdate":"2019-06-13
23:54:41",
"approved":0,
"active":1
},
{
"id":3671,
"name":"ABC Dermatology and MiniOsce .pptx 67.43MB",
"img":null,
"uploader":"admin",
"url":"http:\/\/msc-mu.com\/..\/uploaded\/130620190ABC Dermatology and MiniOsce .pptx",
"createdate":"2019-06-13 23:54:41",
"approved":0,
"active":1
},
{
"id":3672,
"name":"Derma
1ry & 2ry skin lesions.pptx 2.02MB",
"img":null,
"uploader":"admin",
"url":"http:\/\/msc-mu.com\/..\/uploaded\/130620190Derma 1ry & 2ry skin lesions.pptx",
"createdate":"2019-06-13 23:54:41",
"approved":0,
"active":1
},
{
"id":3673,
"name":"Derma mini OSCE.docx
1.96MB",
"img":null,
"uploader":"admin",
"url":"http:\/\/msc-mu.com\/..\/uploaded\/130620190Derma mini OSCE.docx",
"createdate":"2019-06-13 23:54:41",
"approved":0,
"active":1
},
{
"id":4955,
"name":"immune 9 (8_9.3).m4a 45.66MB",
"img":null,
"uploader":"uploader18",
"url":"http:\/\/msc-mu.com\/..\/uploaded\/231020190immune
9 (8_9.3).m4a",
"createdate":"2019-10-23 12:01:36",
"approved":0,
"active":1
}
]
}
我确实单独实现了文件夹列表和单独的文件如何做到这两个?并将它们转换为小部件
这是我的文件小部件代码!以及文件夹的一些更改:
class ListViewFolders extends StatelessWidget {
final List<Files> filesSubject;
ListViewFolders(this.filesSubject);
@override
Widget build(BuildContext context) {
return ListView.builder(
itemBuilder: (BuildContext context, int currentIndex) {
return createFellowFolders(filesSubject[currentIndex], context);
},
itemCount: filesSubject.length,
);
}
Widget createFellowFolders(Files files, BuildContext context) {
String url = files.url;
return Slidable(
actionPane: SlidableDrawerActionPane(),
actionExtentRatio: 0.25,
child: Container(
decoration: BoxDecoration(
border: Border.all(width: 1), color: Colors.transparent.withOpacity(0.3)),
child: ListTile(
title: Text(
files.name,
style: TextStyle(color: Colors.white),
),
subtitle: Text('Slide To View options',
style: TextStyle(color: Colors.white)),
),
),
actions: <Widget>[
IconSlideAction(
caption: 'Play',
color: Colors.red,
icon: FontAwesomeIcons.play,
onTap: () {
toast('coming soon');
}
),
],
secondaryActions: <Widget>[
IconSlideAction(
caption: 'Download',
color: Colors.green,
icon: Icons.arrow_circle_down,
onTap: () async {
final status = await Permission.storage.request();
if (status.isGranted) {
final externalDir = await getExternalStorageDirectory();
final id = await FlutterDownloader.enqueue(
url: files.url,
savedDir: externalDir.path,
showNotification: true,
openFileFromNotification: true);
} else {
toast('Permission Denied');
}
},
),
IconSlideAction(
caption: 'Share',
color: Colors.indigo,
icon: Icons.share,
onTap: () {
Share.share(url);
},
),
],
);
}
}
模型类:
import 'dart:core';
class YearsMain {
final String id;
final String name;
const YearsMain({this.id, this.name});
factory YearsMain.fromJson(Map<String, dynamic> jsonData) {
return YearsMain(
id: jsonData['id'].toString(),
name: jsonData['name'],
);
}
}
class Folders {
String id;
String name;
String haschild;
Folders({this.id, this.name,this.haschild});
factory Folders.fromJson(Map<String, dynamic> json)=> Folders(id: json["id"].toString(),name: json["name"],haschild: json["haschild"].toString());
}
class Files{
String id ;
String name ;
String url ;
Files({this.id,this.name,this.url});
factory Files.fromJson(Map<String, dynamic> json)=> Files(id: json["id"].toString(),name: json["name"],url: json["url"]);
}
【问题讨论】:
-
你能添加你的小部件代码吗?
-
我已经添加了以及如何访问共享类中的文件夹和文件组件