Advertisement
Guest User

Untitled

a guest
Jul 24th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. import 'package:flutter/material.dart';
  2. import "package:collection/collection.dart";
  3.  
  4. void main() => runApp(MyApp());
  5.  
  6. class MyApp extends StatelessWidget {
  7. @override
  8. Widget build(BuildContext context) {
  9. return MaterialApp(
  10. title: 'Flutter Demo',
  11. theme: ThemeData(
  12. primarySwatch: Colors.blue,
  13. ),
  14. home: MyHomePage(),
  15. );
  16. }
  17. }
  18.  
  19. class MyHomePage extends StatelessWidget {
  20. final _lessons = <Lesson>[
  21. Lesson(
  22. startTime: DateTime.utc(2019, 7, 25, 13),
  23. teacher: "Jacek Graczyk",
  24. courseCategory: "Matematyka"),
  25. Lesson(
  26. startTime: DateTime.utc(2019, 7, 25, 14),
  27. teacher: "Piotr Konieczny",
  28. courseCategory: "Historia"),
  29. Lesson(
  30. startTime: DateTime.utc(2019, 7, 27, 20),
  31. teacher: "Marcin Miara",
  32. courseCategory: "Język angielski"),
  33. ];
  34.  
  35. Widget _buildSingleLessonWidget(Lesson lesson) {
  36. return Padding(
  37. padding: EdgeInsets.all(6.0),
  38. child: Row(children: [
  39. Icon(
  40. Icons.cake,
  41. size: 40.0,
  42. ),
  43. Column(
  44. children: [
  45. Text(lesson.courseCategory),
  46. Text(lesson.teacher),
  47. ],
  48. ),
  49. Text(lesson.startTime.hour.toString()),
  50. ]),
  51. );
  52. }
  53.  
  54. Widget _buildLessonsWidget(List<Lesson> lessons, String weekDay) {
  55. final lessonWidgets = lessons.map((Lesson lesson) {
  56. return _buildSingleLessonWidget(lesson);
  57. }).toList();
  58. return Column(
  59. children: [Text(weekDay), ...lessonWidgets],
  60. );
  61. }
  62.  
  63. @override
  64. Widget build(BuildContext context) {
  65. var newMap = groupBy(_lessons, (_lessons) => _lessons.startTime)
  66. .map((k, v) =>
  67. MapEntry(k, _buildLessonsWidget(v, k.toString())))
  68. .entries
  69. .toList()
  70. ..sort((a, b) => a.key.compareTo(b.key))
  71. ..map((x) => x.value);
  72.  
  73. return Scaffold(
  74. appBar: AppBar(
  75. title: Text('NauczMnie'),
  76. ),
  77. body: Column(children: List<Widget>.from(newMap)),
  78. );
  79. }
  80. }
  81.  
  82. class Lesson {
  83. final DateTime startTime;
  84. final String teacher;
  85. final String courseCategory;
  86.  
  87. const Lesson({
  88. @required this.startTime,
  89. @required this.teacher,
  90. @required this.courseCategory,
  91. }) : assert(startTime != null),
  92. assert(teacher != null),
  93. assert(courseCategory != null);
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement