This commit is contained in:
GokaPek 2024-09-23 17:02:51 +04:00
parent 20fde8a65e
commit d383b6149f

View File

@ -33,39 +33,10 @@ class MyHomePage extends StatefulWidget {
} }
class _MyHomePageState extends State<MyHomePage> { class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
int _year = 0;
int _month = 0;
List<Year> years = [];
@override @override
void initState() { void initState() {
super.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++;
if (_month == 11) {
_month = 0;
_year++;
} else {
_month = _counter % 12;
}
});
() {
print('Current Month: ${DateUtils.getMonthName(_month)}');
print('Current Year: $_year');
}();
} }
@override @override
@ -75,75 +46,16 @@ class _MyHomePageState extends State<MyHomePage> {
backgroundColor: Theme.of(context).colorScheme.inversePrimary, backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title), title: Text(widget.title),
), ),
body: Center( body: const MyWidget(),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
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(
'${years[_year].comment}',
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.access_time_filled),
),
); );
} }
} }
// Enum class MyWidget extends StatelessWidget {
enum Month { const MyWidget({super.key});
January,
February,
March,
April,
May,
June,
July,
August,
September,
October,
November,
December,
}
// Расширение @override
extension DateUtils on Month { Widget build(BuildContext context) {
static String getMonthName(int month) { return const Placeholder();
return Month.values[month].name;
} }
static Future<String> getFutureMonthName(int month) async {
await Future.delayed(const Duration(seconds: 1));
return Month.values[month].name;
}
}
String generateRandomComment(Random random) {
const List<String> 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)];
} }