Advertisement
Guest User

Mundre App

a guest
Nov 17th, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JSON 7.18 KB | None | 0 0
  1. [
  2.     {
  3.         "name": "Chapter One [Screens]",
  4.         "programs": [
  5.             {
  6.                 "title": "Material App",
  7.                 "content": "import 'dart:convert';\r\n\r\nimport 'package:flutter/material.dart';\r\nimport 'package:flutter/services.dart';\r\nimport 'package:flutter_syntax_view/flutter_syntax_view.dart';\r\n\r\nimport 'models.dart';\r\n\r\nvoid main() => runApp(MundreApp());\r\n\r\nclass MundreApp extends StatelessWidget {\r\n  @override\r\n  Widget build(BuildContext context) {\r\n    return MaterialApp(\r\n      title: 'Mundre App',\r\n      theme: ThemeData(\r\n        brightness: Brightness.dark,\r\n      ),\r\n      home: HomePage(),\r\n    );\r\n  }\r\n}"
  8.             },
  9.             {
  10.                 "title": "Home Screen",
  11.                 "content": "class HomePage extends StatelessWidget {\r\n  Future<List<Chapter>> loadChaptersJson() async {\r\n    var chaptersJson = await rootBundle.loadString('assets/chapters.json');\r\n    List<dynamic> chapters = jsonDecode(chaptersJson);\r\n    return chapters\r\n        .map<Chapter>((chapter) => Chapter.fromMap(chapter))\r\n        .toList();\r\n  }\r\n\r\n  @override\r\n  Widget build(BuildContext context) {\r\n    return Scaffold(\r\n      appBar: AppBar(\r\n        title: Text('Chapters'),\r\n      ),\r\n      body: FutureBuilder<List<Chapter>>(\r\n        future: loadChaptersJson(),\r\n        builder: (context, snapshot) {\r\n          if (snapshot.hasData) {\r\n            return ListView.separated(\r\n              itemBuilder: (context, index) {\r\n                var chapter = snapshot.data[index];\r\n                return ListTile(\r\n                  title: Text(chapter.name),\r\n                  onTap: () => Navigator.push(\r\n                    context,\r\n                    MaterialPageRoute(\r\n                      builder: (context) => ChapterPage(\r\n                        chapter: chapter,\r\n                      ),\r\n                    ),\r\n                  ),\r\n                );\r\n              },\r\n              separatorBuilder: (context, _) => Divider(height: 2),\r\n              itemCount: snapshot.data.length,\r\n            );\r\n          }\r\n          return Container();\r\n        },\r\n      ),\r\n    );\r\n  }\r\n}"
  12.             },
  13.             {
  14.                 "title": "Chapter List Screen",
  15.                 "content": "class ChapterPage extends StatelessWidget {\r\n  final Chapter chapter;\r\n\r\n  ChapterPage({this.chapter});\r\n\r\n  @override\r\n  Widget build(BuildContext context) {\r\n    return Scaffold(\r\n      appBar: AppBar(\r\n        title: Text(chapter.name),\r\n      ),\r\n      body: ListView.separated(\r\n        itemBuilder: (context, index) {\r\n          return ListTile(\r\n            title: Text(chapter.programs[index].title),\r\n            onTap: () => Navigator.push(\r\n                    context,\r\n                    MaterialPageRoute(\r\n                      builder: (context) => ProgramPage(\r\n                        program: chapter.programs[index],\r\n                      ),\r\n                    ),\r\n                  ),\r\n          );\r\n        },\r\n        separatorBuilder: (context, _) => Divider(height: 2),\r\n        itemCount: chapter.programs.length,\r\n      ),\r\n    );\r\n  }\r\n}\r\n"
  16.             },
  17.             {
  18.                 "title": "Program List Screen",
  19.                 "content": "class ProgramPage extends StatelessWidget {\r\n  final Program program;\r\n\r\n  ProgramPage({this.program});\r\n\r\n  @override\r\n  Widget build(BuildContext context) {\r\n    return Scaffold(\r\n      appBar: AppBar(\r\n        title: FittedBox(\r\n          fit: BoxFit.contain,\r\n          child: Text(program.title),\r\n        ),\r\n      ),\r\n      body: SyntaxView(\r\n        code: program.content,\r\n        syntax: Syntax.DART,\r\n        syntaxTheme: SyntaxTheme.dracula(),\r\n        withZoom: true,\r\n      ),\r\n    );\r\n  }\r\n}\r\n"
  20.             }
  21.         ]
  22.     },
  23.     {
  24.         "name": "Chapter Two [Models]",
  25.         "programs": [
  26.             {
  27.                 "title": "Chapter Class",
  28.                 "content": "class Chapter {\r\n  final String name;\r\n  final List<Program> programs;\r\n\r\n  Chapter({\r\n    this.name,\r\n    this.programs,\r\n  });\r\n\r\n  factory Chapter.fromMap(Map<String, dynamic> chapter) => Chapter(\r\n        name: chapter['name'],\r\n        programs: chapter['programs']\r\n            .map<Program>((program) => Program.fromMap(program))\r\n            .toList(),\r\n      );\r\n}"
  29.             },
  30.             {
  31.                 "title": "Program Class",
  32.                 "content": "class Program {\r\n  final String title;\r\n  final String content;\r\n\r\n  Program({\r\n    this.title,\r\n    this.content,\r\n  });\r\n\r\n  factory Program.fromMap(Map<String, dynamic> program) => Program(\r\n        title: program['title'],\r\n        content: program['content'],\r\n      );\r\n}"
  33.             }
  34.         ]
  35.     },
  36.     {
  37.         "name": "Chapter Three",
  38.         "programs": [
  39.             {
  40.                 "title": "Something One",
  41.                 "content": "class HomePage extends StatelessWidget {\r\n  Future<List<Chapter>> loadChaptersJson() async {\r\n    var chaptersJson = await rootBundle.loadString('assets/chapters.json');\r\n    List<dynamic> chapters = jsonDecode(chaptersJson);\r\n    return chapters\r\n        .map<Chapter>((chapter) => Chapter.fromMap(chapter))\r\n        .toList();\r\n  }\r\n\r\n  @override\r\n  Widget build(BuildContext context) {\r\n    return Scaffold(\r\n      appBar: AppBar(\r\n        title: Text('Chapters'),\r\n      ),\r\n      body: FutureBuilder<List<Chapter>>(\r\n        future: loadChaptersJson(),\r\n        builder: (context, snapshot) {\r\n          if (snapshot.hasData) {\r\n            return ListView.separated(\r\n              itemBuilder: (context, index) {\r\n                var chapter = snapshot.data[index];\r\n                return ListTile(\r\n                  title: Text(chapter.name),\r\n                  onTap: () => Navigator.push(\r\n                    context,\r\n                    MaterialPageRoute(\r\n                      builder: (context) => ChapterPage(\r\n                        chapter: chapter,\r\n                      ),\r\n                    ),\r\n                  ),\r\n                );\r\n              },\r\n              separatorBuilder: (context, _) => Divider(height: 2),\r\n              itemCount: snapshot.data.length,\r\n            );\r\n          }\r\n          return Container();\r\n        },\r\n      ),\r\n    );\r\n  }\r\n}"
  42.             },
  43.             {
  44.                 "title": "Something 2",
  45.                 "content": "import 'dart:convert';\r\n\r\nimport 'package:flutter/material.dart';\r\nimport 'package:flutter/services.dart';\r\nimport 'package:flutter_syntax_view/flutter_syntax_view.dart';\r\n\r\nimport 'models.dart';\r\n\r\nvoid main() => runApp(MundreApp());\r\n\r\nclass MundreApp extends StatelessWidget {\r\n  @override\r\n  Widget build(BuildContext context) {\r\n    return MaterialApp(\r\n      title: 'Mundre App',\r\n      theme: ThemeData(\r\n        brightness: Brightness.dark,\r\n      ),\r\n      home: HomePage(),\r\n    );\r\n  }\r\n}"
  46.             }
  47.         ]
  48.     }
  49. ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement