This commit is contained in:
ValAnn 2024-10-16 10:48:22 +04:00
parent a7f60f5c94
commit 56cc6deabc
2 changed files with 77 additions and 32 deletions

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
// Класс приложения
void main() {
runApp(const MyApp());
}
@ -10,8 +11,10 @@ class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
theme: ThemeData(
// Настраиваем цветовую схему приложения
colorScheme: ColorScheme.fromSeed(seedColor: Colors.indigoAccent),
useMaterial3: true,
),
@ -20,9 +23,9 @@ class MyApp extends StatelessWidget {
}
}
// Класс домашней страницы
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
@ -30,6 +33,15 @@ class MyHomePage extends StatefulWidget {
}
class _MyHomePageState extends State<MyHomePage> {
// Список слов и их переводов
final List<Word> words = [
Word(word: 'Hello', translation: 'Привет', image: 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS69a8OWnRueQNykBpuyfbGxl3gt5ct46NOHg&s'),
Word(word: 'Book', translation: 'Книга', image: 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSfbH7Ckkbzrr3KZlb144GTaAmJnz87U9opGw&s'),
Word(word: 'Cat', translation: 'Кот', image: 'https://upload.wikimedia.org/wikipedia/commons/0/0e/Felis_silvestris_silvestris.jpg'),
];
int currentIndex = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
@ -37,68 +49,101 @@ class _MyHomePageState extends State<MyHomePage> {
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: const MyWidget(),
);
}
}
class MyWidget extends StatelessWidget {
const MyWidget({super.key});
@override
Widget build(BuildContext context) {
return const Center(
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
_Card("Hello1", translation: "desc"),
_Card("Hello1", translation: "desc"),
_Card("Hello", translation: "desc"),
],
body: Center(
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
for (var word in words)
_Card(
word: word.word,
translation: word.translation,
image: word.image,
),
// Кнопки "Знаю" и "Не знаю"
/* Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
// Кнопка "Знаю"
ElevatedButton(
onPressed: () {
setState(() {
currentIndex++;
if (currentIndex >= words.length) {
currentIndex = 0;
}
});
},
child: const Text('Знаю'),
),
const SizedBox(width: 20),
// Кнопка "Не знаю"
ElevatedButton(
onPressed: () {
// Переходим к предыдущей карточке
setState(() {
currentIndex--;
if (currentIndex < 0) {
currentIndex = words.length - 1;
}
});
},
child: const Text('Не знаю'),
),
],
),*/
],
),
),
),
);
}
}
// Класс карточки
class _Card extends StatelessWidget {
final String word;
final String translation;
final IconData icon;
final String image;
const _Card(
this.word, {
const _Card({
required this.word,
required this.translation,
this.icon = Icons.abc,
required this.image,
});
@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsets.all(20),
margin: const EdgeInsets.all(10),
decoration: BoxDecoration(
color: Colors.amberAccent,
color: word == "Cat" ? Colors.greenAccent : Colors.indigoAccent ,
borderRadius: BorderRadius.circular(10),
),
child: Column(
children: [
Image.network(image, width: 300),
Text(
word,
style: Theme.of(context).textTheme.headlineLarge,
),
// Перевод слова
Text(
translation,
style: Theme.of(context).textTheme.bodySmall,
style: Theme.of(context).textTheme.bodyMedium,
),
Icon(
icon,
size: 50,
)
],
),
);
}
}
// Класс для слов
class Word {
final String word;
final String translation;
final String image;
Word({required this.word, required this.translation, required this.image});
}

View File

@ -13,7 +13,7 @@ import 'package:card_app/main.dart';
void main() {
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
// Build our app and trigger a frame.
await tester.pumpWidget(const MyApp());
await tester.pumpWidget(MyApp());
// Verify that our counter starts at 0.
expect(find.text('0'), findsOneWidget);