收藏夹完成

This commit is contained in:
toly
2020-04-23 16:29:26 +08:00
parent 810f9af8fe
commit 7f7a566324
29 changed files with 746 additions and 255 deletions

View File

@@ -0,0 +1,44 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_unit/blocs/category/category_bloc.dart';
import 'package:flutter_unit/blocs/category/category_event.dart';
import 'package:flutter_unit/repositories/itf/category_repository.dart';
import 'category_widget_event.dart';
import 'category_widget_state.dart';
/// create by 张风捷特烈 on 2020-04-21
/// contact me by email 1981462002@qq.com
/// 说明:
class CategoryWidgetBloc
extends Bloc<CategoryWidgetEvent, CategoryWidgetState> {
final CategoryBloc categoryBloc;
CategoryWidgetBloc({@required this.categoryBloc}) {
print('CategoryBloc');
}
CategoryRepository get repository => categoryBloc.repository;
@override
CategoryWidgetState get initialState => CategoryWidgetEmptyState(); //初始状态
@override
Stream<CategoryWidgetState> mapEventToState(
CategoryWidgetEvent event) async* {
if (event is EventLoadCategoryWidget) {
final widgets =
await repository.loadCategoryWidgets(categoryId: event.categoryId);
yield widgets.isNotEmpty
? CategoryWidgetLoadedState(widgets)
: CategoryWidgetEmptyState();
categoryBloc.add(EventLoadCategory());
}
if (event is EventToggleCategoryWidget) {
await repository.toggleCategory(event.categoryId, event.widgetId);
add(EventLoadCategoryWidget(event.categoryId));
}
}
}

View File

@@ -0,0 +1,55 @@
import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart';
/// create by 张风捷特烈 on 2020-04-21
/// contact me by email 1981462002@qq.com
/// 说明:
abstract class CategoryWidgetEvent extends Equatable{
@override
List<Object> get props => [];
}
//class EventLoadCategory extends CategoryWidgetEvent{
// @override
// List<Object> get props => [];
//}
class EventLoadCategoryWidget extends CategoryWidgetEvent{
final int categoryId;
EventLoadCategoryWidget(this.categoryId);
@override
List<Object> get props => [categoryId];
}
class EventToggleCategoryWidget extends CategoryWidgetEvent{
final int categoryId;
final int widgetId;
EventToggleCategoryWidget(this.categoryId,this.widgetId);
@override
List<Object> get props => [categoryId,widgetId];
}
//class EventDeleteCategory extends CategoryWidgetEvent{
// final int id;
//
// EventDeleteCategory({@required this.id});
//
// @override
// List<Object> get props => [id];
//}
//
//class EventAddCategory extends CategoryWidgetEvent{
// final String name;
// final String info;
// final String color;
//
// EventAddCategory({@required this.name, this.info, this.color});
//
// @override
// List<Object> get props => [name,info,color];
//}

View File

@@ -0,0 +1,32 @@
import 'package:equatable/equatable.dart';
import 'package:flutter_unit/model/category_model.dart';
import 'package:flutter_unit/model/widget_model.dart';
/// create by 张风捷特烈 on 2020-04-21
/// contact me by email 1981462002@qq.com
/// 说明:
class CategoryWidgetState extends Equatable{
@override
List<Object> get props => [];
}
class CategoryWidgetLoadedState extends CategoryWidgetState {
final List<WidgetModel> widgets;
CategoryWidgetLoadedState(this.widgets);
List<Object> get props => [widgets];
}
class CategoryWidgetEmptyState extends CategoryWidgetState{
List<Object> get props => [];
}
class AddCategoryFailed extends CategoryWidgetState{
}