property_list 0.0.10 copy "property_list: ^0.0.10" to clipboard
property_list: ^0.0.10 copied to clipboard

Property List

example/lib/main.dart

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

import 'dart:convert';

import 'package:expandable/expandable.dart';
import 'package:property_list/property_list.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'PropertyList Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  State createState() {
    return MyHomePageState();
  }
}

class MyHomePageState extends State<MyHomePage> {
  PropertySheetController controller =
      PropertySheetController(stripEmptyValues: true);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("PropertyList Demo"),
      ),
      body: ExpandableTheme(
        data: const ExpandableThemeData(
          iconColor: Colors.blue,
          useInkWell: true,
        ),
        child: ListView(
          physics: const BouncingScrollPhysics(),
          children: [
            PropertySheet.fromMap(
              json.decode(testData),
            ),
            PropertySheet(
              controller: controller,
              showJSONButton: false,
              keyBuilder: friendlyKeyBuilder,
              headerBuilder: (context, title, originalKey) {
                return Padding(
                  padding: EdgeInsets.all(8),
                  child: Text(
                    title,
                    style: TextStyle(fontSize: 17, fontWeight: FontWeight.bold),
                  ),
                );
              },
              title: "Settings",
            ),
            ElevatedButton(
              child: Text("Populate"),
              onPressed: () {
                controller.update(json.decode(testData2));
              },
            ),
            ElevatedButton(
              child: Text("Populate With JSON Schema"),
              onPressed: () {
                controller.update(json.decode(jsonSchema));
              },
            )
          ],
        ),
      ),
    );
  }
}

const jsonSchema = '''
{
  "\$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "env": {
      "type": "string"
    },
    "api_url": {
      "type": "string"
    },
    "socket_url": {
      "type": "string"
    },
    "default_login_url": {
      "type": "string"
    },
    "default_join_url": {
      "type": "string"
    },
    "socket_logging": {
      "type": "boolean"
    },
    "dev_session_api_key": {
      "type": "string"
    },
    "dev_test_user_id": {
      "type": "string"
    },
    "monitoring": {
      "type": "object",
      "properties": {
        "enable_sentry": {
          "type": "boolean"
        },
        "sentry_dsn": {
          "type": "string"
        }
      },
      "required": [
        "enable_sentry",
        "sentry_dsn"
      ]
    },
    "analytics": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "enable_feature_flags": {
          "type": "boolean"
        },
        "split_key": {
          "type": "string"
        },
        "segment_key": {
          "type": "string"
        }
      },
      "required": [
        "enabled",
        "enable_feature_flags",
        "split_key",
        "segment_key"
      ]
    },
    "feature_flags": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "url": {
          "type": "string"
        },
        "key": {
          "type": "string"
        },
        "app_name": {
          "type": "string"
        }
      },
      "required": [
        "enabled",
        "url",
        "key",
        "app_name"
      ]
    },
    "auth_config": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "issuer_domain": {
          "type": "string"
        },
        "claim_namespace": {
          "type": "string"
        },
        "web": {
          "type": "object",
          "properties": {
            "client_id": {
              "type": "string"
            },
            "redirect_host": {
              "type": "string"
            },
            "redirect_path": {
              "type": "string"
            }
          },
          "required": [
            "client_id",
            "redirect_host",
            "redirect_path"
          ]
        },
        "mobile": {
          "type": "object",
          "properties": {
            "client_id": {
              "type": "string"
            },
            "redirect_host": {
              "type": "string"
            },
            "redirect_path": {
              "type": "string"
            }
          },
          "required": [
            "client_id",
            "redirect_host",
            "redirect_path"
          ]
        }
      },
      "required": [
        "enabled",
        "issuer_domain",
        "claim_namespace",
        "web",
        "mobile"
      ]
    },
    "initial_route": {
      "type": "string"
    },
    "features": {
      "type": "object",
      "properties": {
        "skip_login": {
          "type": "boolean"
        },
        "leaderboard": {
          "type": "boolean"
        },
        "prizes": {
          "type": "boolean"
        }
      },
      "required": [
        "leaderboard",
        "prizes"
      ]
    }
  },
  "required": [
    "env",
    "api_url",
    "socket_url",
    "default_login_url",
    "default_join_url",
    "socket_logging",
    "enable_skip_login",
    "dev_session_api_key",
    "dev_test_user_id",
    "monitoring",
    "analytics",
    "feature_flags",
    "auth_config",
    "initial_route",
    "features"
  ]
}
''';

const testData2 = '''
[{
		"_id": "5fbe5cee1633e6a4d14da809",
		"index": 0,
		"guid": "c47f70a4-be35-4483-95fc-146b8ace615e",
		"isActive": false,
		"balance": "1,544.31",
		"picture": "http://placehold.it/32x32",
		"age": 22,
		"eyeColor": "brown",
		"name": "Agnes Grant",
		"gender": "female",
		"company": "REMOLD",
		"email": "agnesgrant@remold.com",
		"phone": "+1 (819) 483-3608",
		"address": "915 Decatur Street, Bend, Texas, 5012",
		"about": "Ea excepteur anim tempor velit ex. Adipisicing deserunt dolor cillum reprehenderit id nostrud. Aliquip irure in occaecat eiusmod duis fugiat. Officia fugiat ex ad fugiat ipsum duis dolore excepteur eu.",
		"registered": "2020-08-08T02:46:22 +04:00",
		"latitude": 73.27633,
		"longitude": -61.679037,
		"tags": [
			"nostrud",
			"cupidatat",
			"fugiat",
			"qui",
			"labore",
			"dolore",
			"adipisicing"
		],
		"friends": [{
				"id": 0,
				"name": "Leta Allen"
			},
			{
				"id": 1,
				"name": "Mckee Velasquez"
			},
			{
				"id": 2,
				"name": "Rita Ratliff"
			}
		],
		"greeting": "Hello, Agnes Grant! You have 9 unread messages.",
		"favoriteFruit": "apple"
	},
	{
		"_id": "5fbe5cee5e41026b2505e28e",
		"index": 1,
		"guid": "cb513cf8-29e2-4b64-8285-55c72b948eef",
		"isActive": false,
		"balance": "2,803.03",
		"picture": "http://placehold.it/32x32",
		"age": 27,
		"eyeColor": "green",
		"name": "Margaret Gentry",
		"gender": "female",
		"company": "GADTRON",
		"email": "margaretgentry@gadtron.com",
		"phone": "+1 (814) 502-3602",
		"address": "872 Cambridge Place, Sperryville, Marshall Islands, 4683",
		"about": "Incididunt dolor do eiusmod fugiat sit cillum ad. Anim cupidatat veniam ullamco nisi sunt fugiat nisi ut non fugiat proident tempor. Aliquip occaecat velit minim cillum occaecat in dolore proident. Magna nostrud adipisicing commodo occaecat dolor. Commodo occaecat consequat elit do dolor amet non anim ea do. Ea occaecat occaecat anim dolor.",
		"registered": "2020-08-30T07:35:53 +04:00",
		"latitude": -78.532492,
		"longitude": -132.051899,
		"tags": [
			"velit",
			"eu",
			"do",
			"nostrud",
			"nostrud",
			"consequat",
			"ad"
		],
		"friends": [{
				"id": 0,
				"name": "Caitlin Barron"
			},
			{
				"id": 1,
				"name": "Lloyd Sweeney"
			},
			{
				"id": 2,
				"name": "Roxie Delacruz"
			}
		],
		"greeting": "Hello, Margaret Gentry! You have 9 unread messages.",
		"favoriteFruit": "banana"
	},
	{
		"_id": "5fbe5cee0b65acacf51dbebc",
		"index": 2,
		"guid": "1fb1f1cb-0202-4f61-ae00-c6dfc6e5d2ef",
		"isActive": false,
		"balance": "3,911.50",
		"picture": "http://placehold.it/32x32",
		"age": 23,
		"eyeColor": "blue",
		"name": "Guthrie Tran",
		"gender": "male",
		"company": "PHARMEX",
		"email": "guthrietran@pharmex.com",
		"phone": "+1 (922) 480-2756",
		"address": "994 Rutland Road, Darbydale, Massachusetts, 3831",
		"about": "Irure enim labore et laboris nisi ex. Do ex cillum occaecat dolore non. Labore pariatur ut sunt eiusmod Lorem commodo veniam et labore sint. Officia aliquip exercitation pariatur est non esse adipisicing excepteur culpa quis cillum amet commodo mollit.",
		"registered": "2018-03-17T08:23:49 +04:00",
		"latitude": -74.484835,
		"longitude": 30.240517,
		"tags": [
			"ex",
			"Lorem",
			"tempor",
			"minim",
			"proident",
			"amet",
			"aute"
		],
		"friends": [{
				"id": 0,
				"name": "Autumn Dudley"
			},
			{
				"id": 1,
				"name": "Haley Jordan"
			},
			{
				"id": 2,
				"name": "Robbie Nieves"
			}
		],
		"greeting": "Hello, Guthrie Tran! You have 10 unread messages.",
		"favoriteFruit": "apple"
	},
	{
		"_id": "5fbe5cee359467c98ba454b4",
		"index": 3,
		"guid": "4c6e9204-62c4-4237-8c59-85f4cb990b65",
		"isActive": false,
		"balance": "3,556.24",
		"picture": "http://placehold.it/32x32",
		"age": 22,
		"eyeColor": "blue",
		"name": "Chang Munoz",
		"gender": "male",
		"company": "BEDDER",
		"email": "changmunoz@bedder.com",
		"phone": "+1 (984) 439-3245",
		"address": "396 Roebling Street, Dorneyville, New Jersey, 3524",
		"about": "Culpa adipisicing aliqua eiusmod anim nulla nulla do culpa. Sunt ipsum ipsum cillum exercitation Lorem non reprehenderit eiusmod ut do duis nulla. Sunt in quis ex qui nostrud veniam nisi et dolor mollit culpa. Esse ex eiusmod nisi deserunt cupidatat ea fugiat mollit culpa do.",
		"registered": "2019-11-24T03:22:28 +05:00",
		"latitude": -38.847214,
		"longitude": -35.023258,
		"tags": [
			"sint",
			"aute",
			"consectetur",
			"elit",
			"incididunt",
			"cillum",
			"sit"
		],
		"friends": [{
				"id": 0,
				"name": "Rae Lowery"
			},
			{
				"id": 1,
				"name": "Celina Wheeler"
			},
			{
				"id": 2,
				"name": "Doris Thomas"
			}
		],
		"greeting": "Hello, Chang Munoz! You have 10 unread messages.",
		"favoriteFruit": "strawberry"
	},
	{
		"_id": "5fbe5cee2f39daf44fd5af4a",
		"index": 4,
		"guid": "0db8514e-6d0b-4816-be44-fc1d4605e5bf",
		"isActive": false,
		"balance": "3,822.42",
		"picture": "http://placehold.it/32x32",
		"age": 33,
		"eyeColor": "blue",
		"name": "Moss Eaton",
		"gender": "male",
		"company": "ZENTHALL",
		"email": "mosseaton@zenthall.com",
		"phone": "+1 (854) 507-3293",
		"address": "381 Lois Avenue, Wakulla, Georgia, 7779",
		"about": "Anim Lorem voluptate nisi nisi. Aute ipsum tempor elit laboris ex id in id cupidatat aute eiusmod et. Mollit cillum officia id do mollit. Culpa pariatur dolore ad non eiusmod. Enim esse aute eu eu duis. Sit ut voluptate esse irure dolore.",
		"registered": "2015-05-16T09:21:17 +04:00",
		"latitude": -83.183307,
		"longitude": -5.047694,
		"tags": [
			"voluptate",
			"anim",
			"proident",
			"minim",
			"commodo",
			"sunt",
			"esse"
		],
		"friends": [{
				"id": 0,
				"name": "Jimmie Wilkins"
			},
			{
				"id": 1,
				"name": "Dixie Marks"
			},
			{
				"id": 2,
				"name": "Giles Sykes"
			}
		],
		"greeting": "Hello, Moss Eaton! You have 8 unread messages.",
		"favoriteFruit": "banana"
	},
	{
		"_id": "5fbe5cee460c56f441ba8422",
		"index": 5,
		"guid": "44e2abc5-1094-41a9-b08c-f511547e6e24",
		"isActive": true,
		"balance": "3,203.39",
		"picture": "http://placehold.it/32x32",
		"age": 21,
		"eyeColor": "brown",
		"name": "Mcbride Moore",
		"gender": "male",
		"company": "TURNLING",
		"email": "mcbridemoore@turnling.com",
		"phone": "+1 (826) 586-3287",
		"address": "331 Troutman Street, Lupton, Pennsylvania, 1521",
		"about": "Ipsum laborum aute cupidatat consectetur laboris cupidatat proident. Ex incididunt Lorem quis mollit cupidatat laborum aliqua. Est occaecat consequat cillum nulla deserunt consectetur mollit aliquip consequat amet aliqua ea.",
		"registered": "2017-08-19T02:41:47 +04:00",
		"latitude": -45.863695,
		"longitude": 10.618211,
		"tags": [
			"excepteur",
			"velit",
			"tempor",
			"consectetur",
			"eu",
			"laborum",
			"cillum"
		],
		"friends": [{
				"id": 0,
				"name": "Bean Hart"
			},
			{
				"id": 1,
				"name": "Mckenzie Curtis"
			},
			{
				"id": 2,
				"name": "Lucinda Watts"
			}
		],
		"greeting": "Hello, Mcbride Moore! You have 6 unread messages.",
		"favoriteFruit": "strawberry"
	},
	{
		"_id": "5fbe5cee3b3afdfb45c43471",
		"index": 6,
		"guid": "a909b361-fb3b-41cc-8ff9-dff96ee8e761",
		"isActive": true,
		"balance": "2,589.11",
		"picture": "http://placehold.it/32x32",
		"age": 27,
		"eyeColor": "green",
		"name": "Steele Sutton",
		"gender": "male",
		"company": "LIQUIDOC",
		"email": "steelesutton@liquidoc.com",
		"phone": "+1 (829) 600-3642",
		"address": "280 Anna Court, Oberlin, Hawaii, 3937",
		"about": "Cupidatat laborum culpa est voluptate dolor dolore pariatur. Voluptate occaecat duis laboris cupidatat enim. Ipsum sunt nostrud irure nulla laboris tempor aliquip esse.",
		"registered": "2019-05-08T06:35:50 +04:00",
		"latitude": -53.1571,
		"longitude": 43.174399,
		"tags": [
			"laboris",
			"do",
			"cillum",
			"proident",
			"ad",
			"exercitation",
			"laboris"
		],
		"friends": [{
				"id": 0,
				"name": "Cobb Shepherd"
			},
			{
				"id": 1,
				"name": "Gilmore Mitchell"
			},
			{
				"id": 2,
				"name": "Rene Rice"
			}
		],
		"greeting": "Hello, Steele Sutton! You have 9 unread messages.",
		"favoriteFruit": "strawberry"
	},
	{
		"_id": "5fbe5cee98b40e8196b6df14",
		"index": 7,
		"guid": "41b1417b-79d4-4672-aa8e-fba951efa060",
		"isActive": false,
		"balance": "3,539.97",
		"picture": "http://placehold.it/32x32",
		"age": 38,
		"eyeColor": "blue",
		"name": "Knox Mays",
		"gender": "male",
		"company": "CANDECOR",
		"email": "knoxmays@candecor.com",
		"phone": "+1 (996) 424-2570",
		"address": "477 Elliott Place, Harleigh, Virginia, 5098",
		"about": "Cupidatat consectetur sunt Lorem sit ut do deserunt duis incididunt labore est voluptate. Qui ut esse irure officia nulla est et esse. Consectetur mollit sit Lorem tempor eu reprehenderit enim aliquip. Esse veniam excepteur quis eiusmod amet ut magna aliquip reprehenderit irure id ullamco. Laborum magna laborum cupidatat nostrud eiusmod aliqua. Nostrud exercitation nulla excepteur elit laborum id enim aliquip esse laboris aute. Dolore veniam cillum consectetur incididunt.",
		"registered": "2015-01-19T11:17:09 +05:00",
		"latitude": -26.640109,
		"longitude": -127.99809,
		"tags": [
			"ut",
			"cillum",
			"sunt",
			"duis",
			"sit",
			"ipsum",
			"Lorem"
		],
		"friends": [{
				"id": 0,
				"name": "Leanne Carey"
			},
			{
				"id": 1,
				"name": "Christian Alford"
			},
			{
				"id": 2,
				"name": "Fitzpatrick Britt"
			}
		],
		"greeting": "Hello, Knox Mays! You have 6 unread messages.",
		"favoriteFruit": "banana"
	},
	{
		"_id": "5fbe5cee6db0c6f4f25ecc1e",
		"index": 8,
		"guid": "103fbc94-ca7c-43e3-8e21-3e6cfcdf3aec",
		"isActive": false,
		"balance": "3,076.50",
		"picture": "http://placehold.it/32x32",
		"age": 38,
		"eyeColor": "blue",
		"name": "Peck Powell",
		"gender": "male",
		"company": "APPLICA",
		"email": "peckpowell@applica.com",
		"phone": "+1 (921) 483-2778",
		"address": "983 Hazel Court, Oceola, Puerto Rico, 2325",
		"about": "Reprehenderit occaecat eiusmod anim id tempor id officia elit deserunt amet amet est dolore et. Cupidatat dolore ullamco ut velit voluptate. Nostrud incididunt do officia fugiat elit ex. Eiusmod sit amet magna mollit in culpa laborum amet deserunt. Excepteur enim duis Lorem ut pariatur qui commodo enim qui laboris pariatur veniam ut cupidatat. Cillum reprehenderit fugiat officia laboris.",
		"registered": "2014-08-13T07:49:26 +04:00",
		"latitude": 42.967363,
		"longitude": 38.860539,
		"tags": [
			"velit",
			"ex",
			"irure",
			"proident",
			"et",
			"commodo",
			"sit"
		],
		"friends": [{
				"id": 0,
				"name": "Koch Snow"
			},
			{
				"id": 1,
				"name": "Rogers Cash"
			},
			{
				"id": 2,
				"name": "Lakeisha Shannon"
			}
		],
		"greeting": "Hello, Peck Powell! You have 4 unread messages.",
		"favoriteFruit": "banana"
	},
	{
		"_id": "5fbe5ceeaf8a9c7c3d69cf75",
		"index": 9,
		"guid": "c3241cf3-7c15-4d34-9e96-d3e9e68b839a",
		"isActive": false,
		"balance": "3,864.76",
		"picture": "http://placehold.it/32x32",
		"age": 39,
		"eyeColor": "green",
		"name": "Pansy Pickett",
		"gender": "female",
		"company": "PERMADYNE",
		"email": "pansypickett@permadyne.com",
		"phone": "+1 (971) 511-3254",
		"address": "207 Plaza Street, Eastmont, North Carolina, 6291",
		"about": "Minim ullamco ipsum non sunt aliqua consectetur. Aute et sint commodo cupidatat duis incididunt incididunt non aliquip. Officia et ad officia deserunt amet amet. Cillum laborum deserunt aliquip irure id. Ex cupidatat amet ut occaecat labore ullamco nulla culpa. Lorem ullamco ex mollit nostrud in incididunt tempor ullamco deserunt eu sunt et laboris tempor.",
		"registered": "2014-03-12T06:12:56 +04:00",
		"latitude": -71.245438,
		"longitude": 50.346769,
		"tags": [
			"sit",
			"voluptate",
			"in",
			"enim",
			"sint",
			"excepteur",
			"elit"
		],
		"friends": [{
				"id": 0,
				"name": "Osborn Montgomery"
			},
			{
				"id": 1,
				"name": "Pauline Saunders"
			},
			{
				"id": 2,
				"name": "Glenda Foreman"
			}
		],
		"greeting": "Hello, Pansy Pickett! You have 2 unread messages.",
		"favoriteFruit": "banana"
	},
	{
		"_id": "5fbe5ceeda9110e87947fdaf",
		"index": 10,
		"guid": "62944e4f-4c15-4780-a221-2b5546e8b7ac",
		"isActive": true,
		"balance": "3,483.24",
		"picture": "http://placehold.it/32x32",
		"age": 32,
		"eyeColor": "green",
		"name": "Willis Guy",
		"gender": "male",
		"company": "AQUASSEUR",
		"email": "willisguy@aquasseur.com",
		"phone": "+1 (826) 426-2068",
		"address": "834 Royce Street, Leeper, New York, 7172",
		"about": "Voluptate occaecat veniam et proident qui anim amet voluptate mollit dolor laboris mollit do. Sit veniam ullamco esse laboris dolor minim quis deserunt excepteur amet est pariatur. Laboris mollit ea laborum cillum. Quis aliqua et officia tempor deserunt sunt. Ipsum ad incididunt nostrud non laboris id labore proident minim sunt dolore pariatur aliquip ipsum. Ullamco velit aliquip nostrud commodo commodo sit.",
		"registered": "2014-12-29T03:53:56 +05:00",
		"latitude": -35.361461,
		"longitude": 136.583513,
		"tags": [
			"reprehenderit",
			"sit",
			"minim",
			"do",
			"ullamco",
			"reprehenderit",
			"esse"
		],
		"friends": [{
				"id": 0,
				"name": "Adele Kelly"
			},
			{
				"id": 1,
				"name": "Latasha Banks"
			},
			{
				"id": 2,
				"name": "George Spears"
			}
		],
		"greeting": "Hello, Willis Guy! You have 3 unread messages.",
		"favoriteFruit": "strawberry"
	},
	{
		"_id": "5fbe5cee3fd2f43858fb043e",
		"index": 11,
		"guid": "4af31729-f920-4e82-97a1-d49657c8a75e",
		"isActive": true,
		"balance": "2,303.26",
		"picture": "http://placehold.it/32x32",
		"age": 32,
		"eyeColor": "blue",
		"name": "Aurora Berger",
		"gender": "female",
		"company": "ISBOL",
		"email": "auroraberger@isbol.com",
		"phone": "+1 (834) 404-3276",
		"address": "454 Duryea Place, Ribera, Oklahoma, 4418",
		"about": "Consectetur velit magna esse ea tempor eiusmod eu esse exercitation ipsum id aute aliquip. Veniam pariatur est consectetur incididunt et in id exercitation enim elit. Id ad ea excepteur labore pariatur officia consectetur. Reprehenderit tempor amet adipisicing velit quis et voluptate consectetur. Et voluptate Lorem reprehenderit velit irure irure laboris ut sit. Lorem in elit tempor voluptate irure qui amet magna nulla.",
		"registered": "2015-05-24T02:49:30 +04:00",
		"latitude": 37.604361,
		"longitude": -130.522744,
		"tags": [
			"aute",
			"sunt",
			"excepteur",
			"enim",
			"qui",
			"commodo",
			"tempor"
		],
		"friends": [{
				"id": 0,
				"name": "Robles Dickerson"
			},
			{
				"id": 1,
				"name": "Lorna Pratt"
			},
			{
				"id": 2,
				"name": "Annmarie Ward"
			}
		],
		"greeting": "Hello, Aurora Berger! You have 8 unread messages.",
		"favoriteFruit": "strawberry"
	},
	{
		"_id": "5fbe5cee5f2571d263328810",
		"index": 12,
		"guid": "e5b2bbdf-d365-43bc-ab80-1e76686d9b23",
		"isActive": true,
		"balance": "3,709.39",
		"picture": "http://placehold.it/32x32",
		"age": 24,
		"eyeColor": "brown",
		"name": "Lawrence Holman",
		"gender": "male",
		"company": "TINGLES",
		"email": "lawrenceholman@tingles.com",
		"phone": "+1 (893) 496-2068",
		"address": "140 Irving Street, Unionville, North Dakota, 3724",
		"about": "Deserunt fugiat consectetur pariatur ipsum elit cupidatat consectetur ipsum. Quis consequat culpa anim ut nulla. Sit consectetur proident laboris commodo do. Aliquip sunt amet pariatur proident aute laborum ex enim sunt sunt esse.",
		"registered": "2019-11-26T11:46:53 +05:00",
		"latitude": 16.900215,
		"longitude": -143.141886,
		"tags": [
			"reprehenderit",
			"do",
			"tempor",
			"nisi",
			"occaecat",
			"et",
			"officia"
		],
		"friends": [{
				"id": 0,
				"name": "Lara Briggs"
			},
			{
				"id": 1,
				"name": "Mindy Little"
			},
			{
				"id": 2,
				"name": "Tia Flores"
			}
		],
		"greeting": "Hello, Lawrence Holman! You have 2 unread messages.",
		"favoriteFruit": "banana"
	},
	{
		"_id": "5fbe5ceed80c023e71308f89",
		"index": 13,
		"guid": "929ceaad-64b3-4f6a-b822-8a3b753737ae",
		"isActive": false,
		"balance": "1,281.86",
		"picture": "http://placehold.it/32x32",
		"age": 39,
		"eyeColor": "green",
		"name": "Nina Wooten",
		"gender": "female",
		"company": "STRALOY",
		"email": "ninawooten@straloy.com",
		"phone": "+1 (849) 545-2666",
		"address": "501 Scott Avenue, Smeltertown, Idaho, 2918",
		"about": "Eiusmod enim dolor eiusmod duis aute amet non duis id ad laborum non laboris ex. Do dolore dolore culpa duis minim dolor excepteur deserunt id. Ipsum velit incididunt cupidatat proident ut. Aute nostrud sunt aliqua aliqua fugiat labore do.",
		"registered": "2018-06-02T07:08:47 +04:00",
		"latitude": 71.079107,
		"longitude": 178.084076,
		"tags": [
			"est",
			"qui",
			"adipisicing",
			"deserunt",
			"minim",
			"Lorem",
			"consequat"
		],
		"friends": [{
				"id": 0,
				"name": "Wood Moss"
			},
			{
				"id": 1,
				"name": "Velasquez Marshall"
			},
			{
				"id": 2,
				"name": "Andrea Velazquez"
			}
		],
		"greeting": "Hello, Nina Wooten! You have 3 unread messages.",
		"favoriteFruit": "strawberry"
	},
	{
		"_id": "5fbe5ceeb164edf3689a9cb7",
		"index": 14,
		"guid": "b64e7bbb-5a87-490b-be82-b5b081792f03",
		"isActive": true,
		"balance": "1,934.43",
		"picture": "http://placehold.it/32x32",
		"age": 22,
		"eyeColor": "blue",
		"name": "Melody Marsh",
		"gender": "female",
		"company": "IPLAX",
		"email": "melodymarsh@iplax.com",
		"phone": "+1 (834) 543-2737",
		"address": "646 Stoddard Place, Ruffin, Connecticut, 9849",
		"about": "Nostrud laborum ipsum sit aliqua adipisicing minim irure deserunt sit minim. Velit enim consequat esse eiusmod amet aliquip commodo in elit mollit dolore. Sunt cillum aliquip quis ex. Laboris aliquip anim Lorem reprehenderit. Dolor fugiat laboris sunt cupidatat excepteur dolore aliqua. Deserunt adipisicing est occaecat magna nostrud amet laborum reprehenderit. Velit id minim labore et ad.",
		"registered": "2016-10-05T01:56:31 +04:00",
		"latitude": -55.732864,
		"longitude": 159.883804,
		"tags": [
			"excepteur",
			"enim",
			"culpa",
			"qui",
			"nisi",
			"elit",
			"dolore"
		],
		"friends": [{
				"id": 0,
				"name": "Reyes Warren"
			},
			{
				"id": 1,
				"name": "Berg Kirk"
			},
			{
				"id": 2,
				"name": "Joy Franklin"
			}
		],
		"greeting": "Hello, Melody Marsh! You have 3 unread messages.",
		"favoriteFruit": "strawberry"
	}
]
''';
const testData = '''
{
"numbers": [0,1,2],
"letters": ["a", "b", "c"],
"widget": {
    "debug": "on",
    "enable": true,
    "window": {
        "title": "Sample Konfabulator Widget",
        "name": "main_window",
        "width": 500,
        "height": 500
    },
    "image": { 
        "src": "Images/Sun.png",
        "name": "sun1",
        "hOffset": 250,
        "vOffset": 250,
        "alignment": "center"
    },
    "text": {
        "data": "Click Here",
        "size": 36,
        "style": "bold",
        "name": "text1",
        "hOffset": 250,
        "vOffset": 100,
        "alignment": "center",
        "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
    }
}} 
''';