From 20fde8a65ef43d7d562e3d83a769e42cea0e977d Mon Sep 17 00:00:00 2001 From: GokaPek Date: Mon, 9 Sep 2024 23:40:09 +0400 Subject: [PATCH] start --- lib/main.dart | 113 ++++++++++++++++++++++++++++++++++++++++++-------- lib/year.dart | 19 +++++++++ 2 files changed, 115 insertions(+), 17 deletions(-) create mode 100644 lib/year.dart diff --git a/lib/main.dart b/lib/main.dart index 4cd2dca..1fc2b84 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,8 @@ +import 'dart:math'; import 'package:flutter/material.dart'; +import 'year.dart'; + void main() { runApp(const MyApp()); } @@ -7,15 +10,15 @@ void main() { class MyApp extends StatelessWidget { const MyApp({super.key}); - @override + @override Widget build(BuildContext context) { return MaterialApp( - title: 'Flutter Demo', + title: 'Petrushin demo', theme: ThemeData( - colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), + colorScheme: ColorScheme.fromSeed(seedColor: Colors.red), useMaterial3: true, ), - home: const MyHomePage(title: 'Flutter Demo Home Page'), + home: const MyHomePage(title: 'Petrushin Egor Alexandrovich'), ); } } @@ -23,8 +26,6 @@ class MyApp extends StatelessWidget { class MyHomePage extends StatefulWidget { const MyHomePage({super.key, required this.title}); - - final String title; @override @@ -33,29 +34,63 @@ class MyHomePage extends StatefulWidget { class _MyHomePageState extends State { int _counter = 0; + int _year = 0; + int _month = 0; + List years = []; + + @override + void initState() { + super.initState(); + final Random random = Random(); + + for (int i = 0; i < 100; i++) { + int year = i; + String comment = generateRandomComment(random); + years.add(Year(comment, year: year)); + } + } void _incrementCounter() { setState(() { - _counter++; + _counter++; + + if (_month == 11) { + _month = 0; + _year++; + } else { + _month = _counter % 12; + } }); + + () { + print('Current Month: ${DateUtils.getMonthName(_month)}'); + print('Current Year: $_year'); + }(); } @override Widget build(BuildContext context) { - return Scaffold( + return Scaffold( appBar: AppBar( - backgroundColor: Theme.of(context).colorScheme.inversePrimary, - title: Text(widget.title), + backgroundColor: Theme.of(context).colorScheme.inversePrimary, + title: Text(widget.title), ), body: Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, children: [ - const Text( - 'You have pushed the button this many times:', + const Text('Month:'), + Text( + '${DateUtils.getMonthName(_month)}', + style: Theme.of(context).textTheme.headlineMedium, + ), + const Text('Year:'), + Text( + '$_year', + style: Theme.of(context).textTheme.headlineMedium, ), Text( - '$_counter', + '${years[_year].comment}', style: Theme.of(context).textTheme.headlineMedium, ), ], @@ -64,7 +99,51 @@ class _MyHomePageState extends State { floatingActionButton: FloatingActionButton( onPressed: _incrementCounter, tooltip: 'Increment', - child: const Icon(Icons.add), - ), ); + child: const Icon(Icons.access_time_filled), + ), + ); } } + +// Enum +enum Month { + January, + February, + March, + April, + May, + June, + July, + August, + September, + October, + November, + December, +} + +// Расширение +extension DateUtils on Month { + static String getMonthName(int month) { + return Month.values[month].name; + } + static Future getFutureMonthName(int month) async { + await Future.delayed(const Duration(seconds: 1)); + return Month.values[month].name; + } +} + +String generateRandomComment(Random random) { + const List comments = [ + 'Interesting year', + 'Historical year', + 'Eventful year', + 'Peaceful year', + 'Challenging year', + 'Successful year', + 'Unforgettable year', + 'Memorable year', + 'Dynamic year', + 'Stable year', + ]; + return comments[random.nextInt(comments.length)]; +} \ No newline at end of file diff --git a/lib/year.dart b/lib/year.dart new file mode 100644 index 0000000..a923d41 --- /dev/null +++ b/lib/year.dart @@ -0,0 +1,19 @@ +class Year { + final String comment; + final int year; + final bool isLeap; + + Year(this.comment, {required this.year}) : isLeap = _isLeapYear(year); + + static bool _isLeapYear(int year) { + if (year % 4 != 0) { + return false; + } else if (year % 100 != 0) { + return true; + } else if (year % 400 != 0) { + return false; + } else { + return true; + } + } +} \ No newline at end of file