Six on 11:47
This commit is contained in:
parent
bfd46aca31
commit
65217136a8
@ -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'),
|
||||||
);
|
);
|
||||||
}
|
}
|
@ -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 >_<",
|
||||||
),
|
),
|
||||||
|
@ -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 >-<'),
|
||||||
|
),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
18
lib/presentation/home_page/bloc/bloc.dart
Normal file
18
lib/presentation/home_page/bloc/bloc.dart
Normal 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()));
|
||||||
|
}
|
||||||
|
}
|
8
lib/presentation/home_page/bloc/events.dart
Normal file
8
lib/presentation/home_page/bloc/events.dart
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
abstract class HomeEvent {
|
||||||
|
const HomeEvent();
|
||||||
|
}
|
||||||
|
|
||||||
|
class HomeLoadDataEvent extends HomeEvent {
|
||||||
|
const HomeLoadDataEvent();
|
||||||
|
}
|
15
lib/presentation/home_page/bloc/state.dart
Normal file
15
lib/presentation/home_page/bloc/state.dart
Normal 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];
|
||||||
|
}
|
@ -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",
|
||||||
});
|
});
|
||||||
|
40
pubspec.lock
40
pubspec.lock
@ -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:
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user