-
-
Notifications
You must be signed in to change notification settings - Fork 59
/
Copy pathcustom_column_nested_table.dart
85 lines (77 loc) · 2.27 KB
/
custom_column_nested_table.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:json_table/json_table.dart';
import 'package:json_table/src/json_table_column.dart';
class CustomColumnNestedTable extends StatefulWidget {
@override
_CustomColumnNestedTableState createState() =>
_CustomColumnNestedTableState();
}
class _CustomColumnNestedTableState extends State<CustomColumnNestedTable> {
final String jsonSample =
'[{"name":"Ram","email":{"1":"ram@gmail.com"},"age":23,"DOB":"1990-12-01"},'
'{"name":"Shyam","email":{"1":"shyam23@gmail.com"},"age":18,"DOB":"1995-07-01"},'
'{"name":"John","email":{"1":"john@gmail.com"},"age":10,"DOB":"2000-02-24"}]';
bool toggle = true;
List<JsonTableColumn>? columns;
@override
void initState() {
super.initState();
columns = [
JsonTableColumn("name", label: "Name"),
JsonTableColumn("age", label: "Age"),
JsonTableColumn(
"DOB",
label: "Date of Birth",
valueBuilder: formatDOB,
),
JsonTableColumn(
"age",
label: "Eligible to Vote",
valueBuilder: eligibleToVote,
),
JsonTableColumn("email.1", label: "E-mail", defaultValue: "NA"),
];
}
@override
Widget build(BuildContext context) {
var json = jsonDecode(jsonSample);
return Scaffold(
body: SingleChildScrollView(
padding: EdgeInsets.all(16.0),
child: Column(
children: <Widget>[
JsonTable(
json,
columns: columns,
showColumnToggle: true,
),
SizedBox(
height: 16.0,
),
Text(
getPrettyJSONString(jsonSample),
style: TextStyle(fontSize: 13.0),
),
],
),
),
);
}
String getPrettyJSONString(jsonObject) {
JsonEncoder encoder = new JsonEncoder.withIndent(' ');
String jsonString = encoder.convert(json.decode(jsonObject));
return jsonString;
}
String formatDOB(value) {
var dateTime = DateFormat("yyyy-MM-dd").parse(value.toString());
return DateFormat("d MMM yyyy").format(dateTime);
}
String eligibleToVote(value) {
if (value >= 18) {
return "Yes";
} else
return "No";
}
}