Skip to content

Commit 9fde5ec

Browse files
committed
'接入首页的API'
1 parent b358ce9 commit 9fde5ec

File tree

6 files changed

+137
-53
lines changed

6 files changed

+137
-53
lines changed

lib/stores/homeStore.dart

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import 'dart:convert';
21
import 'package:mobx/mobx.dart';
32
import 'package:flutter_book/api/http.dart';
43
import 'package:flutter_book/models/common.dart';
@@ -14,9 +13,15 @@ class HomeStore = _HomeStore with _$HomeStore;
1413
abstract class _HomeStore with Store {
1514
@observable
1615
bool tile = false;
17-
16+
// 推荐列表
1817
@observable
1918
CommonDataList recommendData;
19+
// 热门图书
20+
@observable
21+
CommonDataList hotBooksData;
22+
// 最受欢迎
23+
@observable
24+
CommonDataList popularBookData;
2025

2126
@action
2227
void setTile(String key, dynamic value) => tile = value;
@@ -25,7 +30,8 @@ abstract class _HomeStore with Store {
2530
// num counter() => this.count++;
2631

2732
// 首页数据
28-
void getData() async {
33+
@action
34+
Future getData() async {
2935
List<Response> response = await Future.wait([
3036
// 获取推荐
3137
HttpRequest().dio.get('/api/book_info/recommend',
@@ -37,7 +43,9 @@ abstract class _HomeStore with Store {
3743
HttpRequest().dio.get('/api/book_info/hot_book',
3844
queryParameters: {"index": 1, "size": 10}),
3945
]);
40-
this.recommendData = CommonDataList.fromJson(response[0].data['data']);
46+
recommendData = CommonDataList.fromJson(response[0].data['data']);
47+
popularBookData = CommonDataList.fromJson(response[1].data['data']);
48+
hotBooksData = CommonDataList.fromJson(response[2].data['data']);
4149
}
4250
}
4351

lib/stores/homeStore.g.dart

Lines changed: 41 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/widgets/FirstScreen/HotProduct.dart

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,20 @@ import 'package:flutter_book/widgets/common/CommonTitle.dart';
33
import 'package:flutter_book/model/HotBooksData.dart';
44
import 'package:flutter_book/widgets/common/BookCard.dart';
55
import 'package:fluro/fluro.dart';
6+
import 'package:provider/provider.dart';
7+
import 'package:flutter_book/models/common.dart';
68
import 'package:flutter_book/routers/application.dart';
79
import 'package:flutter_book/helpers/fluro_convert_util.dart';
10+
import 'package:flutter_book/stores/homeStore.dart';
11+
import 'package:flutter_mobx/flutter_mobx.dart';
812

913
class HotProduct extends StatelessWidget {
1014
final List<HotBooksModel> hotBooksData = HotBooksData().hotBooksData;
1115

1216
@override
1317
Widget build(BuildContext context) {
14-
final List<Widget> _children = hotBooksData.map((data) {
15-
return BookCard(
16-
title: data.title, imageUrl: data.imageUrl, author: data.author);
17-
}).toList();
18+
final homeStore = Provider.of<HomeStore>(context);
19+
List<CommonData> hotBooksData = homeStore.hotBooksData?.data;
1820

1921
return Column(
2022
children: <Widget>[
@@ -34,11 +36,21 @@ class HotProduct extends StatelessWidget {
3436
),
3537
Container(
3638
width: MediaQuery.of(context).size.width,
37-
child: Wrap(
38-
// spacing: 20.0,
39-
runSpacing: 30.0,
40-
alignment: WrapAlignment.spaceBetween,
41-
children: _children,
39+
child: Observer(
40+
builder: (_) => hotBooksData == null
41+
? Text("正在获取数据")
42+
: Wrap(
43+
// spacing: 20.0,
44+
runSpacing: 30.0,
45+
alignment: WrapAlignment.spaceBetween,
46+
children: hotBooksData
47+
.take(6)
48+
.map((CommonData data) => BookCard(
49+
title: data.title,
50+
imageUrl: data.bookImage,
51+
author: data.author))
52+
.toList(),
53+
),
4254
),
4355
),
4456
],

lib/widgets/FirstScreen/PopularBooks.dart

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,16 @@ import 'package:flutter_book/widgets/common/CommonBookCard.dart';
44
import 'package:fluro/fluro.dart';
55
import 'package:flutter_book/routers/application.dart';
66
import 'package:flutter_book/helpers/fluro_convert_util.dart';
7+
import 'package:flutter_mobx/flutter_mobx.dart';
8+
import 'package:flutter_book/models/common.dart';
9+
import 'package:provider/provider.dart';
10+
import 'package:flutter_book/stores/homeStore.dart';
711

812
class PopularBooks extends StatelessWidget {
913
@override
1014
Widget build(BuildContext context) {
15+
final homeStore = Provider.of<HomeStore>(context);
16+
List<CommonData> popularBookData = homeStore.recommendData?.data;
1117
return Column(
1218
children: <Widget>[
1319
SizedBox(
@@ -27,17 +33,24 @@ class PopularBooks extends StatelessWidget {
2733
SizedBox(
2834
height: 32.0,
2935
),
30-
Container(
31-
height: 140.0,
32-
child: ListView(
33-
scrollDirection: Axis.horizontal,
34-
children: List.generate(10, (int index) {
35-
return Container(
36-
margin: EdgeInsets.only(right: 16.0),
37-
child: CommonBookCard());
38-
}),
39-
),
40-
)
36+
Observer(
37+
builder: (_) => popularBookData == null
38+
? Text("正在获取数据")
39+
: Container(
40+
height: 140.0,
41+
child: ListView(
42+
scrollDirection: Axis.horizontal,
43+
children: popularBookData
44+
.map((CommonData data) => Container(
45+
margin: EdgeInsets.only(right: 16.0),
46+
child: CommonBookCard(
47+
title: data.title,
48+
bookImage: data.bookImage,
49+
description:data.description.trimLeft(),
50+
)))
51+
.toList()),
52+
),
53+
),
4154
],
4255
);
4356
}

lib/widgets/FirstScreen/Recommend.dart

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import 'package:flutter_book/helpers/constants.dart';
44
import 'package:fluro/fluro.dart';
55
import 'package:flutter_book/routers/application.dart';
66
import 'package:flutter_book/helpers/fluro_convert_util.dart';
7+
import 'package:flutter_mobx/flutter_mobx.dart';
78
import 'package:flutter_book/models/common.dart';
89
import 'package:provider/provider.dart';
910
import 'package:flutter_book/stores/homeStore.dart';
@@ -23,30 +24,33 @@ class Recommend extends StatelessWidget {
2324
@override
2425
Widget build(BuildContext context) {
2526
final homeStore = Provider.of<HomeStore>(context);
26-
List<CommonData> recommendData = homeStore.recommendData.data;
27-
return Column(
28-
children: <Widget>[
29-
CommonTitle(
30-
title: "推荐",
31-
onTap: () {
32-
Application.router.navigateTo(
33-
context,
34-
"/detail?title=${FluroConvertUtils.fluroCnParamsEncode('最受欢迎')}",
35-
transition: TransitionType.native,
36-
// transitionDuration: const Duration(milliseconds: 300),
37-
);
38-
},
39-
),
40-
Container(
41-
height: 140.0,
42-
margin: EdgeInsets.only(top: 40.0, bottom: 18.0),
43-
child: ListView(
44-
scrollDirection: Axis.horizontal,
45-
children: cardList(recommendData),
46-
),
47-
)
48-
],
49-
);
27+
List<CommonData> recommendData = homeStore.recommendData?.data;
28+
return Observer(
29+
builder: (_) => recommendData == null
30+
? Text("正在获取数据")
31+
: Column(
32+
children: <Widget>[
33+
CommonTitle(
34+
title: "推荐",
35+
onTap: () {
36+
Application.router.navigateTo(
37+
context,
38+
"/detail?title=${FluroConvertUtils.fluroCnParamsEncode('最受欢迎')}",
39+
transition: TransitionType.native,
40+
// transitionDuration: const Duration(milliseconds: 300),
41+
);
42+
},
43+
),
44+
Container(
45+
height: 140.0,
46+
margin: EdgeInsets.only(top: 40.0, bottom: 18.0),
47+
child: ListView(
48+
scrollDirection: Axis.horizontal,
49+
children: cardList(recommendData),
50+
),
51+
)
52+
],
53+
));
5054
}
5155
}
5256

lib/widgets/common/CommonBookCard.dart

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,15 @@ import 'package:flutter_book/helpers/constants.dart';
77

88
class CommonBookCard extends StatefulWidget {
99
final double boxWidth;
10+
final String title;
11+
final String bookImage;
12+
final String description;
1013

11-
CommonBookCard({this.boxWidth});
14+
CommonBookCard(
15+
{this.boxWidth,
16+
this.title = "标题",
17+
this.bookImage = "",
18+
this.description = "简介"});
1219

1320
@override
1421
_CommonBookCardState createState() => _CommonBookCardState();
@@ -60,14 +67,14 @@ class _CommonBookCardState extends State<CommonBookCard> {
6067
crossAxisAlignment: CrossAxisAlignment.start,
6168
children: <Widget>[
6269
Text(
63-
'主要介绍Flutter布局中的Row、Column控件',
70+
widget.title,
6471
overflow: TextOverflow.ellipsis,
6572
maxLines: 1,
6673
style: TextStyle(
6774
color: Color(AppColors.fontColor),
6875
fontSize: 18.0),
6976
),
70-
Text('从今天开始正式介绍 Flutter 中的各种 Widgets 了',
77+
Text(widget.description,
7178
overflow: TextOverflow.ellipsis,
7279
maxLines: 1,
7380
style: TextStyle(
@@ -96,8 +103,7 @@ class _CommonBookCardState extends State<CommonBookCard> {
96103
child: ClipRRect(
97104
borderRadius: BorderRadius.circular(4.0),
98105
child: FadeInImage.assetNetwork(
99-
image:
100-
'http://admin.soscoon.com/uploadImages/95b0838eb05d6f8f91ad924dd7e6e5ea672ef183.png',
106+
image: widget.bookImage,
101107
placeholder: 'assets/images/image_none.gif',
102108
fit: BoxFit.cover),
103109
),

0 commit comments

Comments
 (0)