Six on 11:47

This commit is contained in:
Serxiolog 2024-11-18 15:35:22 +04:00
parent bfd46aca31
commit 65217136a8
9 changed files with 102 additions and 8 deletions

View File

@ -5,7 +5,7 @@ extension AnimeDataDtoToModel on AnimeDataDto {
CardData toDomain() => CardData( CardData toDomain() => CardData(
title ?? 'NOT', title ?? 'NOT',
imageUrl: images?.jpg?.image ?? "NONE", imageUrl: images?.jpg?.image ?? "NONE",
score ?? 8, score: score ?? 0,
description: synopsis == null ? "NONE" : synopsis!.split('\n').sublist(0, synopsis!.split('\n').length - 1).join('\n'), description: synopsis == null ? "NONE" : synopsis!.split('\n').sublist(0, synopsis!.split('\n').length - 1).join('\n'),
); );
} }

View File

@ -8,12 +8,12 @@ class MockRepository extends ApiInterface {
return [ return [
const CardData( const CardData(
"First", "First",
5, score: 5,
description: "SomeText", description: "SomeText",
), ),
const CardData( const CardData(
"Second", "Second",
8, score: 8,
icon: Icons.gamepad, icon: Icons.gamepad,
description: "ManyText", description: "ManyText",
imageUrl: imageUrl:
@ -21,7 +21,7 @@ class MockRepository extends ApiInterface {
), ),
const CardData( const CardData(
"Third", "Third",
9, score: 9,
icon: Icons.offline_bolt_outlined, icon: Icons.offline_bolt_outlined,
description: "Wow >_<", description: "Wow >_<",
), ),

View File

@ -1,5 +1,8 @@
import 'package:first_project/data/repositories/anime_repository.dart';
import 'package:first_project/presentation/home_page/bloc/bloc.dart';
import 'package:first_project/presentation/home_page/home_page.dart'; import 'package:first_project/presentation/home_page/home_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
void main() { void main() {
runApp(const MyApp()); runApp(const MyApp());
@ -16,8 +19,15 @@ class MyApp extends StatelessWidget {
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true, useMaterial3: true,
), ),
home: const MyHomePage(title: 'KozyrevSS'), home: RepositoryProvider<AnimeRepository>(
lazy: true,
create: (_) => AnimeRepository(),
child: BlocProvider<HomeBloc>(
lazy: false,
create: (context) => HomeBloc(context.read<AnimeRepository>()),
child: const MyHomePage(title: 'Anime Nya >-<'),
),
),
); );
} }
} }

View File

@ -0,0 +1,18 @@
import 'package:first_project/data/repositories/anime_repository.dart';
import 'package:first_project/presentation/home_page/bloc/events.dart';
import 'package:first_project/presentation/home_page/bloc/state.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
class HomeBloc extends Bloc<HomeEvent, HomeState> {
final AnimeRepository repo;
HomeBloc(this.repo) : super(const HomeState()) {
on<HomeLoadDataEvent>(_onLoadData);
}
void _onLoadData(HomeLoadDataEvent event, Emitter<HomeState> emit) {
emit(state.copyWith(data: repo.loadData()));
}
}

View File

@ -0,0 +1,8 @@
abstract class HomeEvent {
const HomeEvent();
}
class HomeLoadDataEvent extends HomeEvent {
const HomeLoadDataEvent();
}

View File

@ -0,0 +1,15 @@
import 'package:equatable/equatable.dart';
import 'package:first_project/domain/models/card.dart';
import 'package:first_project/presentation/home_page/home_page.dart';
class HomeState extends Equatable {
final Future<List<CardData>?>? data;
const HomeState({this.data});
HomeState copyWith({Future<List<CardData>?>? data}) =>
HomeState(data: data ?? this.data);
@override
List<Object?> get props => [data];
}

View File

@ -10,10 +10,10 @@ class CardData {
final String imageUrl; final String imageUrl;
const CardData( const CardData(
this.text, this.text, {
this.score, {
required this.description, required this.description,
this.icon = Icons.add_call, this.icon = Icons.add_call,
this.score = 0,
this.imageUrl = this.imageUrl =
"https://i.pinimg.com/736x/5f/14/b3/5f14b3f14fcd157bc4dffa39085396cc.jpg", "https://i.pinimg.com/736x/5f/14/b3/5f14b3f14fcd157bc4dffa39085396cc.jpg",
}); });

View File

@ -38,6 +38,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.11.0" version: "2.11.0"
bloc:
dependency: transitive
description:
name: bloc
sha256: "106842ad6569f0b60297619e9e0b1885c2fb9bf84812935490e6c5275777804e"
url: "https://pub.dev"
source: hosted
version: "8.1.4"
boolean_selector: boolean_selector:
dependency: transitive dependency: transitive
description: description:
@ -198,6 +206,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
equatable:
dependency: "direct main"
description:
name: equatable
sha256: c2b87cb7756efdf69892005af546c56c0b5037f54d2a88269b4f347a505e3ca2
url: "https://pub.dev"
source: hosted
version: "2.0.5"
fake_async: fake_async:
dependency: transitive dependency: transitive
description: description:
@ -227,6 +243,14 @@ packages:
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
flutter_bloc:
dependency: "direct main"
description:
name: flutter_bloc
sha256: b594505eac31a0518bdcb4b5b79573b8d9117b193cc80cc12e17d639b10aa27a
url: "https://pub.dev"
source: hosted
version: "8.1.6"
flutter_lints: flutter_lints:
dependency: "direct dev" dependency: "direct dev"
description: description:
@ -392,6 +416,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
nested:
dependency: transitive
description:
name: nested
sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
package_config: package_config:
dependency: transitive dependency: transitive
description: description:
@ -424,6 +456,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.4.0" version: "1.4.0"
provider:
dependency: transitive
description:
name: provider
sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c
url: "https://pub.dev"
source: hosted
version: "6.1.2"
pub_semver: pub_semver:
dependency: transitive dependency: transitive
description: description:

View File

@ -39,6 +39,9 @@ dependencies:
json_annotation: ^4.8.1 json_annotation: ^4.8.1
dio: ^5.4.2+1 dio: ^5.4.2+1
pretty_dio_logger: ^1.3.1 pretty_dio_logger: ^1.3.1
#BLoC
equatable: ^2.0.5
flutter_bloc: ^8.1.5
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
sdk: flutter sdk: flutter