Skip to content

Commit 2f52b31

Browse files
committed
Merge branch 'master' of github.com:Tecode/flutter_book
2 parents 596c2d8 + 33f722e commit 2f52b31

File tree

10 files changed

+247
-26
lines changed

10 files changed

+247
-26
lines changed

README.md

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<h1 align="center">Flutter book App</h1>
2+
<h2 align="center">使用Flutter 1.7.8+hotfix.3,如果不能运行请检查你的Flutter版本</h2>
23

34
## 预览图
45

@@ -29,35 +30,38 @@
2930
## 依赖库
3031

3132
```dart
32-
environment:
33-
sdk: ">=2.1.0 <3.0.0"
3433
dependencies:
3534
flutter:
3635
sdk: flutter
37-
mobx:
38-
flutter_mobx: // Mobx
36+
mobx: ^0.3.3+2
37+
flutter_mobx: ^0.3.0+1
38+
39+
40+
# The following adds the Cupertino Icons font to your application.
41+
# Use with the CupertinoIcons class for iOS style icons.
3942
cupertino_icons: ^0.1.2
40-
flutter_svg: ">=0.12.4" // 处理SVG图片
41-
carousel_slider: ^1.3.0 // 轮播图
42-
fluro: "^1.4.0" // 路由
43-
provider: ^2.0.1 // 用于包裹mobx
44-
dio: 2.1.0 // 请求库
45-
multi_image_picker 4.3.1 // 多选图片
43+
flutter_svg: ">=0.12.4"
44+
carousel_slider: ^1.3.0
45+
fluro: "^1.4.0"
46+
provider: ^2.0.1
47+
dio: 2.1.0
48+
photo_view: 0.4.2
49+
json_annotation: ^2.0.0
4650
4751
dev_dependencies:
4852
flutter_test:
4953
sdk: flutter
50-
build_runner: ^1.3.1 //Mobx依赖
51-
mobx_codegen: // Mobx依赖
52-
liquid_pull_to_refresh: ^1.1.0 // 下拉刷新
54+
build_runner: ^1.6.1
55+
mobx_codegen: ^0.3.3+1
56+
json_serializable: ^3.0.0
5357
```
5458

5559
## `Flutter`版本
5660

5761
### `Ubuntu18`
5862

5963
```bash
60-
Flutter 1.5.9-pre.223 • channel master • https://github.com/flutter/flutter.git
64+
Flutter 1.7.8+hotfix.3 • channel master • https://github.com/flutter/flutter.git
6165
Framework • revision b76a1e8312 (11 days ago) • 2019-05-13 09:06:30 +0100
6266
Engine • revision 816d3fc586
6367
Tools • Dart 2.3.1 (build 2.3.1-dev.0.0 a0290f823c)
@@ -66,7 +70,7 @@ Tools • Dart 2.3.1 (build 2.3.1-dev.0.0 a0290f823c)
6670
### `Windows10`
6771

6872
```bash
69-
Flutter 1.5.4 • channel stable • https://github.com/flutter/flutter.git
73+
Flutter 1.7.8+hotfix.3 • channel stable • https://github.com/flutter/flutter.git
7074
Framework • revision b593f5167b (5 weeks ago) • 2019-04-22 07:51:33 -0700
7175
Engine • revision ca31a7c57b
7276
Tools • Dart 2.3.0 (build 2.3.0-dev.0.1 cf4444b803)

lib/api/http.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class HttpRequest {
55

66
HttpRequest() {
77
// api地址
8-
dio.options.baseUrl = 'http://172.20.10.9:8080/v1/';
8+
dio.options.baseUrl = 'http://192.168.133.241:8080';
99
// 请求超时时间
1010
dio.options.receiveTimeout = 15000;
1111
// 增加拦截器

lib/containers/Find.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,11 @@ class Find extends StatefulWidget {
1212
}
1313

1414
class _FindState extends State<Find> {
15-
1615
@override
1716
Widget build(BuildContext context) {
1817
final findStore = Provider.of<FindStore>(context);
1918
// 发送请求获取数据
20-
findStore.getInfo();
19+
// findStore.getInfo();
2120
return Observer(builder: (_) => findStore.tile ? BookTile() : BookCover());
2221
}
2322
}

lib/containers/FirstScreen.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_book/widgets/FirstScreen/FirstScreenContent.dart';
3+
import 'package:provider/provider.dart';
4+
import 'package:flutter_book/stores/homeStore.dart';
35

46
class FirstScreen extends StatefulWidget {
57
@override
@@ -9,6 +11,8 @@ class FirstScreen extends StatefulWidget {
911
class _FirstScreenState extends State<FirstScreen> {
1012
@override
1113
Widget build(BuildContext context) {
14+
final homeStore = Provider.of<HomeStore>(context);
15+
homeStore.getData();
1216
return FirstScreenContent();
1317
}
1418
}

lib/main.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import 'package:flutter_book/stores/findStore.dart';
1414
import 'package:flutter_book/stores/registerStore.dart';
1515
// 登录
1616
import 'package:flutter_book/stores/loginStore.dart';
17+
// 首页
18+
import 'package:flutter_book/stores/homeStore.dart';
1719

1820
void main() {
1921
// 修改系统状态栏颜色
@@ -33,6 +35,9 @@ void main() {
3335
Provider<LoginStore>(
3436
builder: (_) => LoginStore(),
3537
),
38+
Provider<HomeStore>(
39+
builder: (_) => HomeStore(),
40+
),
3641
],
3742
child: MyApp(),
3843
));

lib/models/common.dart

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import 'package:json_annotation/json_annotation.dart';
2+
3+
part 'common.g.dart';
4+
5+
@JsonSerializable(nullable: false)
6+
class CommonData {
7+
final int id;
8+
final String title;
9+
final String description;
10+
final String author;
11+
final String bookImage;
12+
final String content;
13+
final num score;
14+
final bool delete;
15+
final DateTime createdAt;
16+
final DateTime updatedAt;
17+
final num view;
18+
final bool recommend;
19+
CommonData(
20+
{this.id,
21+
this.title,
22+
this.description,
23+
this.delete,
24+
this.author,
25+
this.bookImage,
26+
this.content,
27+
this.recommend,
28+
this.createdAt,
29+
this.score,
30+
this.updatedAt,
31+
this.view});
32+
factory CommonData.fromJson(Map<String, dynamic> json) =>
33+
_$CommonDataFromJson(json);
34+
Map<String, dynamic> toJson() => _$CommonDataToJson(this);
35+
}
36+
37+
@JsonSerializable(nullable: false)
38+
class CommonDataList {
39+
final num index;
40+
final num size;
41+
final num totalElements;
42+
43+
@JsonKey(name: 'data')
44+
final List<CommonData> data;
45+
46+
CommonDataList(this.data, this.index, this.size, this.totalElements);
47+
48+
factory CommonDataList.fromJson(Map<String, dynamic> json) =>
49+
_$CommonDataListFromJson(json);
50+
}

lib/models/common.g.dart

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

lib/stores/homeStore.dart

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import 'dart:convert';
2+
import 'package:mobx/mobx.dart';
3+
import 'package:flutter_book/api/http.dart';
4+
import 'package:flutter_book/models/common.dart';
5+
import 'package:dio/dio.dart';
6+
7+
// Include generated file
8+
part 'homeStore.g.dart';
9+
10+
// This is the class used by rest of your codebase
11+
class HomeStore = _HomeStore with _$HomeStore;
12+
13+
// The store-class
14+
abstract class _HomeStore with Store {
15+
@observable
16+
bool tile = false;
17+
18+
@observable
19+
CommonDataList recommendData;
20+
21+
@action
22+
void setTile(String key, dynamic value) => tile = value;
23+
24+
// @action
25+
// num counter() => this.count++;
26+
27+
// 首页数据
28+
void getData() async {
29+
List<Response> response = await Future.wait([
30+
// 获取推荐
31+
HttpRequest().dio.get('/api/book_info/recommend',
32+
queryParameters: {"index": 1, "size": 10}),
33+
// 最受欢迎
34+
HttpRequest().dio.get('/api/book_info/popular_book?',
35+
queryParameters: {"index": 1, "size": 10}),
36+
// 最受欢迎
37+
HttpRequest().dio.get('/api/book_info/hot_book',
38+
queryParameters: {"index": 1, "size": 10}),
39+
]);
40+
this.recommendData = CommonDataList.fromJson(response[0].data['data']);
41+
}
42+
}
43+
44+
HomeStore $store = HomeStore();

lib/stores/homeStore.g.dart

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

lib/widgets/FirstScreen/Recommend.dart

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_book/widgets/common/CommonTitle.dart';
33
import 'package:flutter_book/helpers/constants.dart';
4-
import 'package:flutter_book/model/RecommendData.dart'
5-
show RecommendModel, RecommendData;
64
import 'package:fluro/fluro.dart';
75
import 'package:flutter_book/routers/application.dart';
86
import 'package:flutter_book/helpers/fluro_convert_util.dart';
7+
import 'package:flutter_book/models/common.dart';
8+
import 'package:provider/provider.dart';
9+
import 'package:flutter_book/stores/homeStore.dart';
910

1011
class Recommend extends StatelessWidget {
11-
final List<RecommendModel> recommendData = RecommendData().recommendData;
12-
13-
List<Widget> get cardList {
12+
List<Widget> cardList(List<CommonData> recommendData) {
1413
List<Widget> newArr = [];
15-
recommendData.forEach((RecommendModel data) {
14+
recommendData.forEach((CommonData data) {
1615
newArr.add(_CardItem(
17-
imageUrl: data.imageUrl,
16+
imageUrl: data.bookImage,
1817
title: data.title,
1918
));
2019
});
@@ -23,6 +22,8 @@ class Recommend extends StatelessWidget {
2322

2423
@override
2524
Widget build(BuildContext context) {
25+
final homeStore = Provider.of<HomeStore>(context);
26+
List<CommonData> recommendData = homeStore.recommendData.data;
2627
return Column(
2728
children: <Widget>[
2829
CommonTitle(
@@ -41,7 +42,7 @@ class Recommend extends StatelessWidget {
4142
margin: EdgeInsets.only(top: 40.0, bottom: 18.0),
4243
child: ListView(
4344
scrollDirection: Axis.horizontal,
44-
children: cardList,
45+
children: cardList(recommendData),
4546
),
4647
)
4748
],

0 commit comments

Comments
 (0)