forked from toly1994328/FlutterUnit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdefault_collect_page.dart
64 lines (56 loc) · 2.15 KB
/
default_collect_page.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_unit/app/router.dart';
import 'package:flutter_unit/blocs/bloc_exp.dart';
import 'package:flutter_unit/model/widget_model.dart';
import 'package:flutter_unit/views/items/collect_widget_list_item.dart';
/// create by 张风捷特烈 on 2020/6/16
/// contact me by email 1981462002@qq.com
/// 说明:
class DefaultCollectPage extends StatelessWidget {
final gridDelegate = const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
mainAxisSpacing: 10,
crossAxisSpacing: 10,
childAspectRatio: 1 / 0.5,
);
@override
Widget build(BuildContext context) {
return BlocBuilder<CollectBloc, CollectState>(
builder: (ctx, state) {
return CustomScrollView(
slivers: <Widget>[
SliverOverlapInjector(
handle: NestedScrollView.sliverOverlapAbsorberHandleFor(ctx),
),
_buildContent(context, state)],
);
});
}
Widget _buildContent(BuildContext context, CollectState state) {
return SliverPadding(
padding: EdgeInsets.only(top:10, left: 10, right: 10, bottom: 40),
sliver: SliverGrid(
delegate: SliverChildBuilderDelegate(
(_, index) => Container(
child: GestureDetector(
onTap: () =>
_toDetailPage(context, state.widgets[index]),
child: CollectWidgetListItem(
data: state.widgets[index],
onDeleteItemClick: (model) =>
_deleteCollect(context, model),
)),
),
childCount: state.widgets.length),
gridDelegate: gridDelegate),
);
}
_deleteCollect(BuildContext context, WidgetModel model) =>
BlocProvider.of<CollectBloc>(context)
.add(ToggleCollectEvent(id: model.id));
_toDetailPage(BuildContext context, WidgetModel model) {
BlocProvider.of<DetailBloc>(context).add(FetchWidgetDetail(model));
Navigator.pushNamed(context, Router.widget_detail, arguments: model);
}
}