forked from lxm_flutter/FlutterUnit
✨ 优化名称
This commit is contained in:
@@ -12,9 +12,9 @@ export 'category_widget/category_widget_bloc.dart';
|
||||
export 'category_widget/category_widget_state.dart';
|
||||
export 'category_widget/category_widget_event.dart';
|
||||
|
||||
export 'collect/collect_bloc.dart';
|
||||
export 'collect/collect_state.dart';
|
||||
export 'collect/collect_event.dart';
|
||||
export 'like/like_bloc.dart';
|
||||
export 'like/like_state.dart';
|
||||
export 'like/like_event.dart';
|
||||
|
||||
export 'detail/detail_bloc.dart';
|
||||
export 'detail/detail_state.dart';
|
||||
|
||||
@@ -41,8 +41,7 @@ class CategoryBloc extends Bloc<CategoryEvent, CategoryState> {
|
||||
if (event is EventAddCategory) {
|
||||
CategoryPo categoryPo = CategoryPo(
|
||||
name: event.name,
|
||||
color: event.color ??
|
||||
ColorUtils.colorString(UnitColor.collectColorSupport[0]),
|
||||
color: event.color ?? ColorUtils.colorString(UnitColor.collectColorSupport[0]),
|
||||
info: event.info ?? '这里什么都没有...',
|
||||
created: DateTime.now(),
|
||||
updated: DateTime.now());
|
||||
|
||||
@@ -33,6 +33,7 @@ class EventDeleteCategory extends CategoryEvent{
|
||||
List<Object> get props => [id];
|
||||
}
|
||||
|
||||
|
||||
class EventAddCategory extends CategoryEvent{
|
||||
final String name;
|
||||
final String info;
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:flutter_unit/model/widget_model.dart';
|
||||
|
||||
/// create by 张风捷特烈 on 2020-04-09
|
||||
/// contact me by email 1981462002@qq.com
|
||||
/// 说明:
|
||||
|
||||
|
||||
abstract class CollectEvent extends Equatable {}
|
||||
|
||||
|
||||
//class EventSetCollect extends CollectEvent {
|
||||
// final bool collect;
|
||||
//
|
||||
// EventSetCollect({this.collect});
|
||||
//
|
||||
// @override
|
||||
// // TODO: implement props
|
||||
// List<Object> get props => [collect];
|
||||
//}
|
||||
|
||||
class EventSetCollectData extends CollectEvent {
|
||||
List<Object> get props => [];
|
||||
}
|
||||
|
||||
|
||||
class ToggleCollectEvent extends CollectEvent {
|
||||
final int id;
|
||||
|
||||
ToggleCollectEvent({this.id});
|
||||
|
||||
@override
|
||||
// TODO: implement props
|
||||
List<Object> get props => [id];
|
||||
}
|
||||
|
||||
class LoadCollectEvent extends CollectEvent{
|
||||
@override
|
||||
List<Object> get props => [];
|
||||
|
||||
}
|
||||
|
||||
@@ -4,33 +4,33 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flutter_unit/storage/dao/widget_dao.dart';
|
||||
import 'package:flutter_unit/repositories/itf/widget_repository.dart';
|
||||
|
||||
import 'collect_event.dart';
|
||||
import 'collect_state.dart';
|
||||
import 'like_event.dart';
|
||||
import 'like_state.dart';
|
||||
|
||||
/// create by 张风捷特烈 on 2020-04-07
|
||||
/// contact me by email 1981462002@qq.com
|
||||
/// 说明:
|
||||
|
||||
class CollectBloc extends Bloc<CollectEvent, CollectState> {
|
||||
class LikeWidgetBloc extends Bloc<LikeWidgetEvent, LikeWidgetState> {
|
||||
final WidgetRepository repository;
|
||||
|
||||
CollectBloc({@required this.repository});
|
||||
LikeWidgetBloc({@required this.repository});
|
||||
|
||||
@override
|
||||
CollectState get initialState => CollectState(widgets: []); //初始状态
|
||||
LikeWidgetState get initialState => LikeWidgetState(widgets: []); //初始状态
|
||||
|
||||
@override
|
||||
Stream<CollectState> mapEventToState(
|
||||
CollectEvent event,
|
||||
Stream<LikeWidgetState> mapEventToState(
|
||||
LikeWidgetEvent event,
|
||||
) async* {
|
||||
if (event is ToggleCollectEvent) {
|
||||
if (event is ToggleLikeWidgetEvent) {
|
||||
await repository.toggleCollect(event.id);
|
||||
final widgets = await repository.loadCollectWidgets();
|
||||
yield CollectState(widgets: widgets);
|
||||
yield LikeWidgetState(widgets: widgets);
|
||||
}
|
||||
if( event is EventSetCollectData){
|
||||
final widgets = await repository.loadCollectWidgets();
|
||||
yield CollectState(widgets: widgets);
|
||||
yield LikeWidgetState(widgets: widgets);
|
||||
}
|
||||
}
|
||||
}
|
||||
27
lib/blocs/like/like_event.dart
Normal file
27
lib/blocs/like/like_event.dart
Normal file
@@ -0,0 +1,27 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:flutter_unit/model/widget_model.dart';
|
||||
|
||||
/// create by 张风捷特烈 on 2020-04-09
|
||||
/// contact me by email 1981462002@qq.com
|
||||
/// 说明:
|
||||
|
||||
abstract class LikeWidgetEvent extends Equatable {}
|
||||
|
||||
class EventSetCollectData extends LikeWidgetEvent {
|
||||
List<Object> get props => [];
|
||||
}
|
||||
|
||||
class ToggleLikeWidgetEvent extends LikeWidgetEvent {
|
||||
final int id;
|
||||
|
||||
ToggleLikeWidgetEvent({this.id});
|
||||
|
||||
@override
|
||||
// TODO: implement props
|
||||
List<Object> get props => [id];
|
||||
}
|
||||
|
||||
class LoadCollectEvent extends LikeWidgetEvent {
|
||||
@override
|
||||
List<Object> get props => [];
|
||||
}
|
||||
@@ -5,10 +5,10 @@ import 'package:flutter_unit/model/widget_model.dart';
|
||||
/// contact me by email 1981462002@qq.com
|
||||
/// 说明:
|
||||
|
||||
class CollectState extends Equatable {
|
||||
class LikeWidgetState extends Equatable {
|
||||
final List<WidgetModel> widgets;
|
||||
|
||||
CollectState({this.widgets});
|
||||
LikeWidgetState({this.widgets});
|
||||
|
||||
@override
|
||||
// TODO: implement props
|
||||
@@ -46,8 +46,8 @@ class _BlocWrapperState extends State<BlocWrapper> {
|
||||
BlocProvider<CategoryBloc>(
|
||||
create: (_) => categoryBloc..add(EventLoadCategory())),
|
||||
|
||||
BlocProvider<CollectBloc>(
|
||||
create: (_) => CollectBloc(repository: repository)
|
||||
BlocProvider<LikeWidgetBloc>(
|
||||
create: (_) => LikeWidgetBloc(repository: repository)
|
||||
..add(EventSetCollectData())),
|
||||
|
||||
BlocProvider<CategoryWidgetBloc>(
|
||||
|
||||
@@ -89,7 +89,7 @@ class _UnitNavigationState extends State<UnitNavigation> {
|
||||
_controller.animateToPage(index,
|
||||
duration: const Duration(milliseconds: 200), curve: Curves.linear);
|
||||
if (index == 1) {
|
||||
BlocProvider.of<CollectBloc>(context).add(EventSetCollectData());
|
||||
BlocProvider.of<LikeWidgetBloc>(context).add(EventSetCollectData());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,8 +3,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flutter_star/flutter_star.dart';
|
||||
import 'package:flutter_unit/app/res/cons.dart';
|
||||
import 'package:flutter_unit/app/res/style/shape/coupon_shape_border.dart';
|
||||
import 'package:flutter_unit/blocs/collect/collect_bloc.dart';
|
||||
import 'package:flutter_unit/blocs/collect/collect_state.dart';
|
||||
import 'package:flutter_unit/blocs/bloc_exp.dart';
|
||||
import 'package:flutter_unit/components/permanent/circle_image.dart';
|
||||
import 'package:flutter_unit/components/permanent/circle_text.dart';
|
||||
import 'package:flutter_unit/components/permanent/tag.dart';
|
||||
@@ -95,7 +94,7 @@ class CouponWidgetListItem extends StatelessWidget {
|
||||
return Positioned(
|
||||
top: 0,
|
||||
right: 40,
|
||||
child: BlocBuilder<CollectBloc, CollectState>(builder: (_, s) {
|
||||
child: BlocBuilder<LikeWidgetBloc, LikeWidgetState>(builder: (_, s) {
|
||||
bool show = s.widgets.contains(data);
|
||||
return Opacity(
|
||||
opacity: show ? 1.0 : 0.0,
|
||||
|
||||
@@ -75,7 +75,7 @@ class SimpleWidgetListItem extends StatelessWidget {
|
||||
return Positioned(
|
||||
top: 0,
|
||||
right: 40,
|
||||
child: BlocBuilder<CollectBloc, CollectState>(builder: (_, s) {
|
||||
child: BlocBuilder<LikeWidgetBloc, LikeWidgetState>(builder: (_, s) {
|
||||
bool show = s.widgets.contains(data);
|
||||
return Opacity(
|
||||
opacity: show ? 1.0 : 0.0,
|
||||
|
||||
@@ -4,8 +4,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flutter_star/flutter_star.dart';
|
||||
import 'package:flutter_unit/app/res/cons.dart';
|
||||
import 'package:flutter_unit/app/res/style/shape/techno_shape.dart';
|
||||
import 'package:flutter_unit/blocs/collect/collect_bloc.dart';
|
||||
import 'package:flutter_unit/blocs/collect/collect_state.dart';
|
||||
import 'package:flutter_unit/blocs/bloc_exp.dart';
|
||||
import 'package:flutter_unit/components/permanent/circle_image.dart';
|
||||
import 'package:flutter_unit/components/permanent/circle_text.dart';
|
||||
import 'package:flutter_unit/components/permanent/tag.dart';
|
||||
@@ -70,7 +69,7 @@ class TechnoWidgetListItem extends StatelessWidget {
|
||||
return Positioned(
|
||||
top: 0,
|
||||
right: 40,
|
||||
child: BlocBuilder<CollectBloc, CollectState>(builder: (_, s) {
|
||||
child: BlocBuilder<LikeWidgetBloc, LikeWidgetState>(builder: (_, s) {
|
||||
bool show = s.widgets.contains(data);
|
||||
return Opacity(
|
||||
opacity: show ? 1.0 : 0.0,
|
||||
|
||||
@@ -162,9 +162,9 @@ class AboutAppPage extends StatelessWidget {
|
||||
InfoPanel(
|
||||
title: 'Flutter Unit 1.0',
|
||||
info: 'Flutter Unit 1.0 核心计划是收录widget,即widget集录。'
|
||||
'目前收录组件204个,均可在app中进行查看。'
|
||||
'目前收录组件 283 个,均可在 app 中进行查看。'
|
||||
'项目中提供widget图鉴文件可供下载参考。功能主要如下:\n'
|
||||
'○ 200+的Flutter 组件收录和详情介绍。\n'
|
||||
'○ 280+的 Flutter 组件收录和详情介绍。\n'
|
||||
'○ 对一些重要的组件提供操作体验。\n'
|
||||
'○ link to功能,查看组件时可以切换到相关组件。\n'
|
||||
'○ 组件收藏和取消收藏功能。\n'
|
||||
|
||||
@@ -7,7 +7,7 @@ import 'package:flutter_unit/components/permanent/circle_image.dart';
|
||||
import 'package:flutter_unit/components/permanent/feedback_widget.dart';
|
||||
|
||||
import 'category_page.dart';
|
||||
import 'default_collect_page.dart';
|
||||
import 'like_widget_page.dart';
|
||||
|
||||
class CollectPage extends StatefulWidget {
|
||||
@override
|
||||
@@ -19,7 +19,7 @@ class _CollectPageState extends State<CollectPage>
|
||||
|
||||
final _tabs = [
|
||||
'收藏集录',
|
||||
'默认收藏',
|
||||
'珍藏组件',
|
||||
];
|
||||
|
||||
@override
|
||||
@@ -44,7 +44,7 @@ class _CollectPageState extends State<CollectPage>
|
||||
body: TabBarView(
|
||||
children: <Widget>[
|
||||
CategoryPage(),
|
||||
DefaultCollectPage(),
|
||||
LikeWidgetPage(),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@@ -10,9 +10,9 @@ import 'package:flutter_unit/views/items/collect_widget_list_item.dart';
|
||||
/// contact me by email 1981462002@qq.com
|
||||
/// 说明:
|
||||
|
||||
class DefaultCollectPage extends StatelessWidget {
|
||||
class LikeWidgetPage extends StatelessWidget {
|
||||
|
||||
final gridDelegate = const SliverGridDelegateWithFixedCrossAxisCount(
|
||||
final SliverGridDelegate gridDelegate = const SliverGridDelegateWithFixedCrossAxisCount(
|
||||
crossAxisCount: 2,
|
||||
mainAxisSpacing: 10,
|
||||
crossAxisSpacing: 10,
|
||||
@@ -21,7 +21,7 @@ class DefaultCollectPage extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocBuilder<CollectBloc, CollectState>(
|
||||
return BlocBuilder<LikeWidgetBloc, LikeWidgetState>(
|
||||
builder: (ctx, state) {
|
||||
return CustomScrollView(
|
||||
slivers: <Widget>[
|
||||
@@ -37,7 +37,7 @@ class DefaultCollectPage extends StatelessWidget {
|
||||
});
|
||||
}
|
||||
|
||||
Widget _buildContent(BuildContext context, CollectState state) {
|
||||
Widget _buildContent(BuildContext context, LikeWidgetState state) {
|
||||
return SliverPadding(
|
||||
padding: EdgeInsets.only(top:10, left: 10, right: 10, bottom: 0),
|
||||
sliver: SliverGrid(
|
||||
@@ -58,8 +58,8 @@ class DefaultCollectPage extends StatelessWidget {
|
||||
}
|
||||
|
||||
_deleteCollect(BuildContext context, WidgetModel model) =>
|
||||
BlocProvider.of<CollectBloc>(context)
|
||||
.add(ToggleCollectEvent(id: model.id));
|
||||
BlocProvider.of<LikeWidgetBloc>(context)
|
||||
.add(ToggleLikeWidgetEvent(id: model.id));
|
||||
|
||||
_toDetailPage(BuildContext context, WidgetModel model) {
|
||||
BlocProvider.of<DetailBloc>(context).add(FetchWidgetDetail(model));
|
||||
@@ -71,7 +71,7 @@ class _WidgetDetailPageState extends State<WidgetDetailPage> {
|
||||
|
||||
Widget _buildCollectButton(WidgetModel model, BuildContext context) {
|
||||
//监听 CollectBloc 伺机弹出toast
|
||||
return BlocListener<CollectBloc, CollectState>(
|
||||
return BlocListener<LikeWidgetBloc, LikeWidgetState>(
|
||||
listener: (ctx, st) {
|
||||
bool collected = st.widgets.contains(model);
|
||||
String msg =
|
||||
@@ -79,9 +79,9 @@ class _WidgetDetailPageState extends State<WidgetDetailPage> {
|
||||
_showToast(ctx, msg, collected);
|
||||
},
|
||||
child: FeedbackWidget(
|
||||
onPressed: () => BlocProvider.of<CollectBloc>(context)
|
||||
.add(ToggleCollectEvent(id: model.id)),
|
||||
child: BlocBuilder<CollectBloc, CollectState>(
|
||||
onPressed: () => BlocProvider.of<LikeWidgetBloc>(context)
|
||||
.add(ToggleLikeWidgetEvent(id: model.id)),
|
||||
child: BlocBuilder<LikeWidgetBloc, LikeWidgetState>(
|
||||
builder: (_, s) => Padding(
|
||||
padding: const EdgeInsets.only(right: 20.0),
|
||||
child: Icon(
|
||||
|
||||
Reference in New Issue
Block a user