Skip to content

Instantly share code, notes, and snippets.

@dumazy
Created August 3, 2021 06:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dumazy/b8d6d72a1359c6b9f638480d667f5cf9 to your computer and use it in GitHub Desktop.
Save dumazy/b8d6d72a1359c6b9f638480d667f5cf9 to your computer and use it in GitHub Desktop.
Complex json display flutter
import 'package:flutter/material.dart';
import 'dart:convert';
final Color darkBlue = Color.fromARGB(255, 18, 32, 47);
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue),
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(
child: MyWidget(),
),
),
);
}
}
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
final data = getData();
return ListView.separated(
itemCount: data.length,
separatorBuilder: (_, index) => Divider(),
itemBuilder: (_, outerIndex) {
final group = data[outerIndex];
return Column(
children:
group.map((slot) => ListTile(
title: Text("date: ${slot.date}"),
subtitle: Text("available: ${slot.available}"),
)).toList(),
);
}
);
}
}
List<List<TimeSlot>> getData() {
final myJson = """{
"time": [
[
{
"date": "1",
"available": "2"
},
{
"date": "2",
"available": "2"
},
{
"date": "3",
"available": "3"
}
],
[
{
"date": "1",
"available": "2"
},
{
"date": "2",
"available": "2"
},
{
"date": "3",
"available": "2"
}
]
]
}""";
final json = jsonDecode(myJson);
final timeJson = (json['time'] as List<dynamic>).cast<List<dynamic>>();
return timeJson.map((timeGroup) {
return timeGroup.map((item) {
return TimeSlot.fromJson(item as Map<String, dynamic>);
}).toList();
}).toList();
}
class TimeSlot {
final String date;
final String available;
TimeSlot(this.date, this.available);
TimeSlot.fromJson(Map<String, dynamic> json)
: date = json['date'],
available = json['available'];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment