поправил файлики
This commit is contained in:
parent
88711e8f27
commit
97cad27d29
@ -1,7 +1,9 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import '../../presentation/home_page/bloc/hero_detail_bloc.dart';
|
import '../../presentation/heroDetail/hero_detail_block.dart';
|
||||||
import '../../data/repositories/hero_repository.dart';
|
import '../../data/repositories/hero_repository.dart';
|
||||||
|
import '../../presentation/heroDetail/hero_detail_state.dart';
|
||||||
|
import '../../presentation/heroDetail/hero_detail_events.dart';
|
||||||
|
|
||||||
class HeroDetailScreen extends StatelessWidget {
|
class HeroDetailScreen extends StatelessWidget {
|
||||||
final int heroId;
|
final int heroId;
|
||||||
|
@ -3,9 +3,13 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
|||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import '../../Components/locale/l10n/app_locale.dart';
|
import '../../Components/locale/l10n/app_locale.dart';
|
||||||
import '../../main.dart';
|
import '../../main.dart';
|
||||||
import '../../presentation/home_page/bloc/hero_list_bloc.dart';
|
|
||||||
import '../../widgets/hero_card.dart';
|
import '../../widgets/hero_card.dart';
|
||||||
import '../../presentation/home_page/bloc/hero_search_bloc.dart';
|
import '../../presentation/heroSearch/hero_search_block.dart';
|
||||||
|
import '../../presentation/heroSearch/hero_search_state.dart';
|
||||||
|
import '../../presentation/heroSearch/hero_search_event.dart';
|
||||||
|
import '../../presentation/home_page/bloc/block.dart';
|
||||||
|
import '../../presentation/home_page/bloc/events.dart';
|
||||||
|
import '../../presentation/home_page/bloc/state.dart';
|
||||||
|
|
||||||
class HeroListScreen extends StatelessWidget {
|
class HeroListScreen extends StatelessWidget {
|
||||||
const HeroListScreen({Key? key}) : super(key: key);
|
const HeroListScreen({Key? key}) : super(key: key);
|
||||||
|
@ -3,10 +3,13 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
|||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'data/repositories/hero_repository.dart';
|
import 'data/repositories/hero_repository.dart';
|
||||||
import 'services/api_service.dart';
|
import 'services/api_service.dart';
|
||||||
import 'presentation/home_page/bloc/hero_list_bloc.dart';
|
|
||||||
import 'presentation/home_page/bloc/hero_search_bloc.dart';
|
|
||||||
import 'components/screens/hero_list_screen.dart';
|
import 'components/screens/hero_list_screen.dart';
|
||||||
import 'Components/locale/l10n/app_locale.dart';
|
import 'Components/locale/l10n/app_locale.dart';
|
||||||
|
import 'presentation/home_page/bloc/block.dart';
|
||||||
|
import 'presentation/home_page/bloc/events.dart';
|
||||||
|
import 'presentation/home_page/bloc/state.dart';
|
||||||
|
import '../../presentation/heroSearch/hero_search_block.dart';
|
||||||
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
final apiService = ApiService(baseUrl: 'https://assets.deadlock-api.com');
|
final apiService = ApiService(baseUrl: 'https://assets.deadlock-api.com');
|
||||||
|
23
lib/presentation/heroDetail/hero_detail_block.dart
Normal file
23
lib/presentation/heroDetail/hero_detail_block.dart
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import '../../data/dtos/hero_dto.dart';
|
||||||
|
import '../../data/repositories/hero_repository.dart';
|
||||||
|
import 'hero_detail_state.dart';
|
||||||
|
import 'hero_detail_events.dart';
|
||||||
|
|
||||||
|
// BLoC
|
||||||
|
class HeroDetailBloc extends Bloc<HeroDetailEvent, HeroDetailState> {
|
||||||
|
final HeroRepository heroRepository;
|
||||||
|
|
||||||
|
HeroDetailBloc(this.heroRepository) : super(HeroDetailInitial()) {
|
||||||
|
on<FetchHeroDetails>((event, emit) async {
|
||||||
|
emit(HeroDetailLoading());
|
||||||
|
try {
|
||||||
|
final hero = await heroRepository.getHeroDetails(event.heroId);
|
||||||
|
emit(HeroDetailLoaded(hero));
|
||||||
|
} catch (e) {
|
||||||
|
emit(HeroDetailError(e.toString()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
21
lib/presentation/heroDetail/hero_detail_events.dart
Normal file
21
lib/presentation/heroDetail/hero_detail_events.dart
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import '../../data/dtos/hero_dto.dart';
|
||||||
|
import '../../data/repositories/hero_repository.dart';
|
||||||
|
|
||||||
|
// Events
|
||||||
|
abstract class HeroDetailEvent extends Equatable {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchHeroDetails extends HeroDetailEvent {
|
||||||
|
final int heroId;
|
||||||
|
|
||||||
|
FetchHeroDetails(this.heroId);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [heroId];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
31
lib/presentation/heroDetail/hero_detail_state.dart
Normal file
31
lib/presentation/heroDetail/hero_detail_state.dart
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import '../../data/dtos/hero_dto.dart';
|
||||||
|
import '../../data/repositories/hero_repository.dart';
|
||||||
|
|
||||||
|
abstract class HeroDetailState extends Equatable {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class HeroDetailInitial extends HeroDetailState {}
|
||||||
|
|
||||||
|
class HeroDetailLoading extends HeroDetailState {}
|
||||||
|
|
||||||
|
class HeroDetailLoaded extends HeroDetailState {
|
||||||
|
final HeroDto hero;
|
||||||
|
|
||||||
|
HeroDetailLoaded(this.hero);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [hero];
|
||||||
|
}
|
||||||
|
|
||||||
|
class HeroDetailError extends HeroDetailState {
|
||||||
|
final String message;
|
||||||
|
|
||||||
|
HeroDetailError(this.message);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [message];
|
||||||
|
}
|
@ -2,49 +2,8 @@ import 'package:bloc/bloc.dart';
|
|||||||
import 'package:equatable/equatable.dart';
|
import 'package:equatable/equatable.dart';
|
||||||
import '../../../data/dtos/hero_dto.dart';
|
import '../../../data/dtos/hero_dto.dart';
|
||||||
import '../../../data/repositories/hero_repository.dart';
|
import '../../../data/repositories/hero_repository.dart';
|
||||||
|
import 'hero_search_event.dart';
|
||||||
// Events
|
import 'hero_search_state.dart';
|
||||||
abstract class HeroSearchEvent extends Equatable {
|
|
||||||
@override
|
|
||||||
List<Object> get props => [];
|
|
||||||
}
|
|
||||||
|
|
||||||
class SearchHeroes extends HeroSearchEvent {
|
|
||||||
final String query;
|
|
||||||
|
|
||||||
SearchHeroes(this.query);
|
|
||||||
|
|
||||||
@override
|
|
||||||
List<Object> get props => [query];
|
|
||||||
}
|
|
||||||
|
|
||||||
// States
|
|
||||||
abstract class HeroSearchState extends Equatable {
|
|
||||||
@override
|
|
||||||
List<Object> get props => [];
|
|
||||||
}
|
|
||||||
|
|
||||||
class HeroSearchInitial extends HeroSearchState {}
|
|
||||||
|
|
||||||
class HeroSearchLoading extends HeroSearchState {}
|
|
||||||
|
|
||||||
class HeroSearchLoaded extends HeroSearchState {
|
|
||||||
final List<HeroDto> heroes;
|
|
||||||
|
|
||||||
HeroSearchLoaded(this.heroes);
|
|
||||||
|
|
||||||
@override
|
|
||||||
List<Object> get props => [heroes];
|
|
||||||
}
|
|
||||||
|
|
||||||
class HeroSearchError extends HeroSearchState {
|
|
||||||
final String message;
|
|
||||||
|
|
||||||
HeroSearchError(this.message);
|
|
||||||
|
|
||||||
@override
|
|
||||||
List<Object> get props => [message];
|
|
||||||
}
|
|
||||||
|
|
||||||
// BLoC
|
// BLoC
|
||||||
class HeroSearchBloc extends Bloc<HeroSearchEvent, HeroSearchState> {
|
class HeroSearchBloc extends Bloc<HeroSearchEvent, HeroSearchState> {
|
18
lib/presentation/heroSearch/hero_search_event.dart
Normal file
18
lib/presentation/heroSearch/hero_search_event.dart
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import '../../../data/dtos/hero_dto.dart';
|
||||||
|
import '../../../data/repositories/hero_repository.dart';
|
||||||
|
|
||||||
|
abstract class HeroSearchEvent extends Equatable {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class SearchHeroes extends HeroSearchEvent {
|
||||||
|
final String query;
|
||||||
|
|
||||||
|
SearchHeroes(this.query);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [query];
|
||||||
|
}
|
32
lib/presentation/heroSearch/hero_search_state.dart
Normal file
32
lib/presentation/heroSearch/hero_search_state.dart
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import '../../../data/dtos/hero_dto.dart';
|
||||||
|
import '../../../data/repositories/hero_repository.dart';
|
||||||
|
|
||||||
|
// States
|
||||||
|
abstract class HeroSearchState extends Equatable {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class HeroSearchInitial extends HeroSearchState {}
|
||||||
|
|
||||||
|
class HeroSearchLoading extends HeroSearchState {}
|
||||||
|
|
||||||
|
class HeroSearchLoaded extends HeroSearchState {
|
||||||
|
final List<HeroDto> heroes;
|
||||||
|
|
||||||
|
HeroSearchLoaded(this.heroes);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [heroes];
|
||||||
|
}
|
||||||
|
|
||||||
|
class HeroSearchError extends HeroSearchState {
|
||||||
|
final String message;
|
||||||
|
|
||||||
|
HeroSearchError(this.message);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [message];
|
||||||
|
}
|
@ -2,42 +2,8 @@ import 'package:bloc/bloc.dart';
|
|||||||
import 'package:equatable/equatable.dart';
|
import 'package:equatable/equatable.dart';
|
||||||
import '../../../data/dtos/hero_dto.dart';
|
import '../../../data/dtos/hero_dto.dart';
|
||||||
import '../../../data/repositories/hero_repository.dart';
|
import '../../../data/repositories/hero_repository.dart';
|
||||||
|
import 'events.dart';
|
||||||
// Events
|
import 'state.dart';
|
||||||
abstract class HeroListEvent extends Equatable {
|
|
||||||
@override
|
|
||||||
List<Object> get props => [];
|
|
||||||
}
|
|
||||||
|
|
||||||
class FetchHeroes extends HeroListEvent {}
|
|
||||||
|
|
||||||
// States
|
|
||||||
abstract class HeroListState extends Equatable {
|
|
||||||
@override
|
|
||||||
List<Object> get props => [];
|
|
||||||
}
|
|
||||||
|
|
||||||
class HeroListInitial extends HeroListState {}
|
|
||||||
|
|
||||||
class HeroListLoading extends HeroListState {}
|
|
||||||
|
|
||||||
class HeroListLoaded extends HeroListState {
|
|
||||||
final List<HeroDto> heroes;
|
|
||||||
|
|
||||||
HeroListLoaded(this.heroes);
|
|
||||||
|
|
||||||
@override
|
|
||||||
List<Object> get props => [heroes];
|
|
||||||
}
|
|
||||||
|
|
||||||
class HeroListError extends HeroListState {
|
|
||||||
final String message;
|
|
||||||
|
|
||||||
HeroListError(this.message);
|
|
||||||
|
|
||||||
@override
|
|
||||||
List<Object> get props => [message];
|
|
||||||
}
|
|
||||||
|
|
||||||
// BLoC
|
// BLoC
|
||||||
class HeroListBloc extends Bloc<HeroListEvent, HeroListState> {
|
class HeroListBloc extends Bloc<HeroListEvent, HeroListState> {
|
14
lib/presentation/home_page/bloc/events.dart
Normal file
14
lib/presentation/home_page/bloc/events.dart
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import '../../../data/dtos/hero_dto.dart';
|
||||||
|
import '../../../data/repositories/hero_repository.dart';
|
||||||
|
|
||||||
|
// Events
|
||||||
|
abstract class HeroListEvent extends Equatable {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class FetchHeroes extends HeroListEvent {}
|
||||||
|
|
||||||
|
|
@ -1,64 +0,0 @@
|
|||||||
import 'package:bloc/bloc.dart';
|
|
||||||
import 'package:equatable/equatable.dart';
|
|
||||||
import '../../../data/dtos/hero_dto.dart';
|
|
||||||
import '../../../data/repositories/hero_repository.dart';
|
|
||||||
|
|
||||||
// Events
|
|
||||||
abstract class HeroDetailEvent extends Equatable {
|
|
||||||
@override
|
|
||||||
List<Object> get props => [];
|
|
||||||
}
|
|
||||||
|
|
||||||
class FetchHeroDetails extends HeroDetailEvent {
|
|
||||||
final int heroId;
|
|
||||||
|
|
||||||
FetchHeroDetails(this.heroId);
|
|
||||||
|
|
||||||
@override
|
|
||||||
List<Object> get props => [heroId];
|
|
||||||
}
|
|
||||||
|
|
||||||
// States
|
|
||||||
abstract class HeroDetailState extends Equatable {
|
|
||||||
@override
|
|
||||||
List<Object> get props => [];
|
|
||||||
}
|
|
||||||
|
|
||||||
class HeroDetailInitial extends HeroDetailState {}
|
|
||||||
|
|
||||||
class HeroDetailLoading extends HeroDetailState {}
|
|
||||||
|
|
||||||
class HeroDetailLoaded extends HeroDetailState {
|
|
||||||
final HeroDto hero;
|
|
||||||
|
|
||||||
HeroDetailLoaded(this.hero);
|
|
||||||
|
|
||||||
@override
|
|
||||||
List<Object> get props => [hero];
|
|
||||||
}
|
|
||||||
|
|
||||||
class HeroDetailError extends HeroDetailState {
|
|
||||||
final String message;
|
|
||||||
|
|
||||||
HeroDetailError(this.message);
|
|
||||||
|
|
||||||
@override
|
|
||||||
List<Object> get props => [message];
|
|
||||||
}
|
|
||||||
|
|
||||||
// BLoC
|
|
||||||
class HeroDetailBloc extends Bloc<HeroDetailEvent, HeroDetailState> {
|
|
||||||
final HeroRepository heroRepository;
|
|
||||||
|
|
||||||
HeroDetailBloc(this.heroRepository) : super(HeroDetailInitial()) {
|
|
||||||
on<FetchHeroDetails>((event, emit) async {
|
|
||||||
emit(HeroDetailLoading());
|
|
||||||
try {
|
|
||||||
final hero = await heroRepository.getHeroDetails(event.heroId);
|
|
||||||
emit(HeroDetailLoaded(hero));
|
|
||||||
} catch (e) {
|
|
||||||
emit(HeroDetailError(e.toString()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
35
lib/presentation/home_page/bloc/state.dart
Normal file
35
lib/presentation/home_page/bloc/state.dart
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import '../../../data/dtos/hero_dto.dart';
|
||||||
|
import '../../../data/repositories/hero_repository.dart';
|
||||||
|
|
||||||
|
|
||||||
|
// States
|
||||||
|
abstract class HeroListState extends Equatable {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class HeroListInitial extends HeroListState {}
|
||||||
|
|
||||||
|
class HeroListLoading extends HeroListState {}
|
||||||
|
|
||||||
|
class HeroListLoaded extends HeroListState {
|
||||||
|
final List<HeroDto> heroes;
|
||||||
|
|
||||||
|
HeroListLoaded(this.heroes);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [heroes];
|
||||||
|
}
|
||||||
|
|
||||||
|
class HeroListError extends HeroListState {
|
||||||
|
final String message;
|
||||||
|
|
||||||
|
HeroListError(this.message);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [message];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user