lab2
This commit is contained in:
parent
71214d3f1d
commit
83178515c5
103
lib/main.dart
103
lib/main.dart
@ -1,4 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'dart:math';
|
||||
|
||||
void main() {
|
||||
runApp(const MyApp());
|
||||
@ -7,7 +8,7 @@ void main() {
|
||||
class MyApp extends StatelessWidget {
|
||||
const MyApp({super.key});
|
||||
|
||||
@override
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
title: 'Flutter Demo',
|
||||
@ -24,8 +25,6 @@ class MyApp extends StatelessWidget {
|
||||
class MyHomePage extends StatefulWidget {
|
||||
const MyHomePage({super.key, required this.title});
|
||||
|
||||
|
||||
|
||||
final String title;
|
||||
|
||||
@override
|
||||
@ -37,20 +36,20 @@ class _MyHomePageState extends State<MyHomePage> {
|
||||
|
||||
void _incrementCounter() {
|
||||
setState(() {
|
||||
_counter++;
|
||||
_counter++;
|
||||
});
|
||||
}
|
||||
|
||||
@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: <Widget>[
|
||||
const Text(
|
||||
'You have pushed the button this many times:',
|
||||
@ -66,6 +65,90 @@ class _MyHomePageState extends State<MyHomePage> {
|
||||
onPressed: _incrementCounter,
|
||||
tooltip: 'Increment',
|
||||
child: const Icon(Icons.add),
|
||||
), );
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class Game extends Object {
|
||||
final String name;
|
||||
final int price;
|
||||
final GameType type; //жанр игры
|
||||
final String? description;
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
if (other is Game) {
|
||||
return this.name == other.name;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//стандартный конструктор с именованными параметрами
|
||||
Game(
|
||||
{required this.name,
|
||||
required this.price,
|
||||
required this.type,
|
||||
this.description});
|
||||
|
||||
//именованный конструктор с примером игры
|
||||
Game.exampleLateShift()
|
||||
: name = 'Late Shift',
|
||||
price = 200,
|
||||
type = GameType.FMV,
|
||||
description = null;
|
||||
|
||||
void printInfo() {
|
||||
print('''
|
||||
Игра: $name
|
||||
Жанр: ${GameTypeNames[type]}
|
||||
Цена: $price руб. ''');
|
||||
if (description != null) {
|
||||
print('Описание: $description');
|
||||
}
|
||||
}
|
||||
|
||||
//асинхронный метод - иммитация скачивания
|
||||
Future<void> download() async {
|
||||
print('Начало загрузки игры $name');
|
||||
var rand = Random();
|
||||
int time = rand.nextInt(10000) + 100;
|
||||
//асинхронность (Future), анонимная функция (Anonymous function)
|
||||
Future.delayed(
|
||||
Duration(milliseconds: time), () => print("Игра $name загружена"));
|
||||
}
|
||||
}
|
||||
|
||||
enum GameType { FMV, Shooter, Strategy, Horror }
|
||||
|
||||
//Названия жанров на русском
|
||||
const Map<GameType, String> GameTypeNames = {
|
||||
GameType.FMV: "FMV",
|
||||
GameType.Shooter: "Шутер",
|
||||
GameType.Strategy: "Стратегия",
|
||||
GameType.Horror: "Хоррор"
|
||||
};
|
||||
|
||||
void availableTypesRus() => printMapValues(GameTypeNames);
|
||||
|
||||
//цикл (loop) + generic (хз, куда ещё их можно)
|
||||
void printMapValues<T, U>(Map<T, U> map) {
|
||||
for (var val in map.values) {
|
||||
print(val);
|
||||
}
|
||||
}
|
||||
|
||||
extension GameTypeRus on GameType {
|
||||
String get rusName {
|
||||
switch(this) {
|
||||
case GameType.FMV:
|
||||
return 'FMV';
|
||||
case GameType.Shooter:
|
||||
return 'Шутер';
|
||||
case GameType.Strategy:
|
||||
return 'Стратегия';
|
||||
case GameType.Horror:
|
||||
return 'Хоррор';
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user