forked from lxm_flutter/FlutterUnit
✨ 收藏夹完成
This commit is contained in:
44
lib/blocs/category_widget/category_widget_bloc.dart
Normal file
44
lib/blocs/category_widget/category_widget_bloc.dart
Normal 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
55
lib/blocs/category_widget/category_widget_event.dart
Normal file
55
lib/blocs/category_widget/category_widget_event.dart
Normal 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];
|
||||
//}
|
||||
32
lib/blocs/category_widget/category_widget_state.dart
Normal file
32
lib/blocs/category_widget/category_widget_state.dart
Normal 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{
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user