PMU_2024/lib/presentation/home_page/home_page.dart

118 lines
6.2 KiB
Dart
Raw Normal View History

2024-09-23 20:37:45 +04:00
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:pmu/domain/models/card.dart';
import 'package:pmu/presentation/details_page/details_page.dart';
part 'card.dart';
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final Color _color = Colors.white;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.blue,
title: Text(
widget.title,
2024-09-23 22:21:08 +04:00
style: const TextStyle(color: Colors.white, fontWeight: FontWeight.bold),
2024-09-23 20:37:45 +04:00
),
),
body: const Body(),
);
}
}
class Body extends StatelessWidget {
const Body({super.key});
@override
Widget build(BuildContext context) {
final data = [
CardData(
2024-09-23 22:21:08 +04:00
text: 'Что',
descText: 'Как следует из заключения, которое имеется в распоряжении агентства, документ направлен на сохранение и укрепление традиционных семейных ценностей. Он предусматривает установление защиты от распространения в интернете, СМИ, кинофильмах и рекламе информации, пропагандирующей отказ от рождения детей.' * 10,
2024-09-23 20:37:45 +04:00
imageUrl:
2024-09-23 22:21:08 +04:00
'https://sun9-80.userapi.com/impg/6zgTFCriDQjiAQITCZIMb6jCjViUBgo1fzMLwA/4MJOK5aBZt8.jpg?size=1622x2160&quality=95&sign=57b1751fe201d3728998e96ac3a7ed7a&type=album',),
2024-09-23 20:37:45 +04:00
CardData(
2024-09-23 22:21:08 +04:00
text: 'Вершит',
descText: 'Речь идет о двух нежилых помещениях: одно — площадью почти 650 квадратных метров, второе — свыше 330. Cогласно сервисам проверки недвижимости, оба помещения относятся к особняку в Чистом переулке, одно из них оценивается почти в 73 миллиона рублей (по кадастровой стоимости).',
2024-09-23 20:37:45 +04:00
icon: Icons.account_balance,
imageUrl:
2024-09-23 22:21:08 +04:00
'https://sun9-32.userapi.com/impg/0GkPBnqsxmWufKQrO7kA8y6JpnVwVPuezGhwvQ/_h1wPKl1-s0.jpg?size=600x600&quality=96&sign=e1f3eb74cf15263de35e82c83aedb894&type=album'),
2024-09-23 20:37:45 +04:00
CardData(
2024-09-23 22:21:08 +04:00
text: 'Судьбу',
descText: 'На контроле ситуация с эвакуацией курян, проживающих в 15-километровой зоне в Рыльском и Хомутовском районах. Всего за прошедшую неделю из приграничья в безопасные районы убыли самостоятельно и организованными колоннами более шести тысяч человек", — говорится в публикации по итогам заседания регионального правительства.',
2024-09-23 20:37:45 +04:00
icon: Icons.add_call,
imageUrl:
2024-09-23 22:21:08 +04:00
'https://sun9-70.userapi.com/impg/pzUP2M-ekHGD-0hvftyyrAYoMGB91-aCPwcPEA/dEc1PemeQpk.jpg?size=474x600&quality=95&sign=d83d8106137e012bfda2de9e70010f43&type=album',
2024-09-23 20:37:45 +04:00
),
CardData(
2024-09-23 22:21:08 +04:00
text: 'Человечества',
descText: '"Запущена официальная процедура смены фамилии", — прокомментировали РИА Новости в пресс-службе объединенной компании Wildberries и Russ (РВБ).',
2024-09-23 20:37:45 +04:00
icon: Icons.add_call,
imageUrl:
2024-09-23 22:21:08 +04:00
'https://i.pinimg.com/736x/df/91/dc/df91dc3de2580cffc66d01000c0c6d82.jpg',
2024-09-23 20:37:45 +04:00
),
CardData(
2024-09-23 22:21:08 +04:00
text: 'В этом мире?',
descText: '"Мы не располагаем никакой информацией на этот счет. Это скорее вопрос, который относится к компетенции наших военных, поэтому я рекомендую туда обращаться", — сказал пресс-секретарь.',
2024-09-23 20:37:45 +04:00
icon: Icons.add_call,
imageUrl:
2024-09-23 22:21:08 +04:00
'https://sun9-80.userapi.com/impg/EzIhe8VsYrt0Eq-LzYf9DMitSISIDNVUATkz0w/qzIsFaog46s.jpg?size=483x604&quality=96&sign=5bb2247498cc216af4518677af87c9d6&type=album',
),
CardData(
text: 'Некая незримая сущность?',
descText: '"Мы не располагаем никакой информацией на этот счет. Это скорее вопрос, который относится к компетенции наших военных, поэтому я рекомендую туда обращаться", — сказал пресс-секретарь.',
icon: Icons.add_call,
imageUrl:
'https://sun9-30.userapi.com/impg/5CPSfy33XVIKNTZBd5dgONJrPeCMFn6lOE81kg/eL8SLoL530I.jpg?size=1278x1280&quality=95&sign=f809d63142dac3559e7f7c3ddf817614&type=album',
2024-09-23 20:37:45 +04:00
),
];
return Center(
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: data.map((data) {
return _Card.fromData(
data,
onLike: (String title, bool isLiked) =>
_showSnackBar(context, title, isLiked),
onTap: () => _navToDetails(context, data),
);
}).toList(),
),
),
);
}
void _showSnackBar(BuildContext context, String title, bool isLiked) {
WidgetsBinding.instance.addPostFrameCallback((_) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text(
'The New $title ${isLiked ? 'liked!' : 'disliked'}',
style: Theme.of(context).textTheme.bodyLarge,
),
backgroundColor: Colors.lightBlue,
duration: const Duration(seconds: 1),
));
});
}
void _navToDetails(BuildContext context, CardData data) {
Navigator.push(
context,
CupertinoPageRoute(builder: (context) => DetailsPage(data)),
);
}
}