Skip to content

Commit 1e758b6

Browse files
committed
feat:using extended_image replace cached_network_image
1 parent 64ecde9 commit 1e758b6

File tree

5 files changed

+70
-106
lines changed

5 files changed

+70
-106
lines changed

lib/components/manage_item.dart

Lines changed: 18 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import 'package:cached_network_image/cached_network_image.dart';
1+
import 'package:extended_image/extended_image.dart';
22
import 'package:flutter/material.dart';
3+
import 'package:flutter_picgo/utils/extended.dart';
34
import 'package:path/path.dart';
45

56
typedef GestureTapCallback = void Function();
@@ -77,48 +78,23 @@ class ManageItem extends StatelessWidget {
7778
var imageSuffixs = ['png', 'bmp', 'jpeg', 'gif', 'jpg'];
7879
if (imageSuffixs.contains(suffix)) {
7980
return SizedBox(
80-
height: 50,
81-
width: 50,
82-
child: Card(
83-
clipBehavior: Clip.antiAlias,
84-
shape: RoundedRectangleBorder(
85-
borderRadius: BorderRadiusDirectional.circular(2)),
86-
child: CachedNetworkImage(
87-
imageUrl: this.url,
88-
fit: BoxFit.cover,
89-
placeholder: (context, url) => Center(
90-
child: Container(
91-
width: 10,
92-
height: 10,
93-
child: CircularProgressIndicator(
94-
strokeWidth: 3,
95-
),
96-
),
81+
height: 50,
82+
width: 50,
83+
child: Card(
84+
clipBehavior: Clip.antiAlias,
85+
shape: RoundedRectangleBorder(
86+
borderRadius: BorderRadiusDirectional.circular(2)),
87+
child: ExtendedImage.network(
88+
this.url,
89+
width: 50,
90+
height: 50,
91+
fit: BoxFit.cover,
92+
cache: true,
93+
border: Border.all(color: Colors.grey, width: 1.0),
94+
borderRadius: BorderRadius.all(Radius.circular(8)),
95+
loadStateChanged: (state) => defaultLoadStateChanged(state),
9796
),
98-
errorWidget: (context, url, error) {
99-
return Container(
100-
color: Colors.grey,
101-
child: Center(
102-
child: Column(
103-
mainAxisAlignment: MainAxisAlignment.center,
104-
children: <Widget>[
105-
Icon(
106-
Icons.error,
107-
size: 12,
108-
),
109-
SizedBox(height: 2),
110-
Text(
111-
'加载失败',
112-
style: TextStyle(fontSize: 8),
113-
)
114-
],
115-
),
116-
),
117-
);
118-
},
119-
),
120-
),
121-
);
97+
));
12298
} else {
12399
return buildCenterIcon(Icon(IconData(0xe654, fontFamily: 'iconfont')));
124100
}

lib/components/upload_item/upload_item.dart

Lines changed: 1 addition & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import 'dart:io';
22

3-
import 'package:cached_network_image/cached_network_image.dart';
43
import 'package:extended_image/extended_image.dart';
54
import 'package:flutter/cupertino.dart';
65
import 'package:flutter/material.dart';
76
import 'package:flutter_picgo/components/upload_item/upload_item_presenter.dart';
7+
import 'package:flutter_picgo/utils/extended.dart';
88

99
enum UploadState {
1010
/// 上传中
@@ -132,40 +132,6 @@ class _UploadItemState extends State<UploadItem> implements UploadItemContract {
132132
}
133133
}
134134

135-
Widget defaultLoadStateChanged(ExtendedImageState state) {
136-
switch (state.extendedImageLoadState) {
137-
case LoadState.loading:
138-
return Center(
139-
child: SizedBox(
140-
width: 16,
141-
height: 16,
142-
child: CupertinoActivityIndicator(),
143-
),
144-
);
145-
break;
146-
case LoadState.failed:
147-
return GestureDetector(
148-
child: Stack(
149-
fit: StackFit.expand,
150-
alignment: AlignmentDirectional.center,
151-
children: <Widget>[
152-
Icon(
153-
Icons.error,
154-
size: 16,
155-
color: Colors.grey[600],
156-
)
157-
],
158-
),
159-
onTap: () {
160-
state.reLoadImage();
161-
},
162-
);
163-
break;
164-
default:
165-
return null;
166-
}
167-
}
168-
169135
/// 开始上传
170136
_startUpload() {
171137
setState(() {

lib/utils/extended.dart

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import 'package:extended_image/extended_image.dart';
2+
import 'package:flutter/cupertino.dart';
3+
import 'package:flutter/material.dart';
4+
5+
Widget defaultLoadStateChanged(ExtendedImageState state,
6+
{double iconSize = 16}) {
7+
switch (state.extendedImageLoadState) {
8+
case LoadState.loading:
9+
return Center(
10+
child: Center(
11+
child: SizedBox(
12+
width: iconSize,
13+
height: iconSize,
14+
child: CupertinoActivityIndicator(),
15+
),
16+
),
17+
);
18+
break;
19+
case LoadState.failed:
20+
return GestureDetector(
21+
child: Stack(
22+
fit: StackFit.expand,
23+
alignment: AlignmentDirectional.center,
24+
children: <Widget>[
25+
Icon(
26+
Icons.error,
27+
size: iconSize,
28+
color: Colors.grey[600],
29+
)
30+
],
31+
),
32+
onTap: () {
33+
state.reLoadImage();
34+
},
35+
);
36+
break;
37+
default:
38+
return null;
39+
}
40+
}
41+
42+
class MiniActivityIndicator {}

lib/views/album_page/album_page.dart

Lines changed: 9 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import 'package:cached_network_image/cached_network_image.dart';
1+
import 'package:extended_image/extended_image.dart';
22
import 'package:fluro/fluro.dart';
33
import 'package:flutter/material.dart';
44
import 'package:flutter_picgo/components/loading.dart';
55
import 'package:flutter_picgo/model/uploaded.dart';
66
import 'package:flutter_picgo/routers/application.dart';
77
import 'package:flutter_picgo/routers/routers.dart';
8+
import 'package:flutter_picgo/utils/extended.dart';
89
import 'package:flutter_picgo/utils/permission.dart';
910
import 'package:flutter_picgo/views/album_page/album_page_presenter.dart';
1011
import 'package:permission_handler/permission_handler.dart';
@@ -142,34 +143,14 @@ class _AlbumPageState extends State<AlbumPage> implements AlbumPageContract {
142143
clipBehavior: Clip.antiAlias,
143144
shape: RoundedRectangleBorder(
144145
borderRadius: BorderRadiusDirectional.circular(8)),
145-
child: CachedNetworkImage(
146-
imageUrl: _uploadeds[index].path,
146+
child: ExtendedImage.network(
147+
_uploadeds[index].path,
148+
height: 150,
147149
fit: BoxFit.cover,
148-
placeholder: (context, url) => Center(
149-
child: Container(
150-
width: 20,
151-
height: 20,
152-
child: CircularProgressIndicator(),
153-
),
154-
),
155-
errorWidget: (context, url, error) {
156-
return Container(
157-
color: Colors.grey,
158-
child: Center(
159-
child: Column(
160-
mainAxisAlignment: MainAxisAlignment.center,
161-
children: <Widget>[
162-
Icon(Icons.error),
163-
SizedBox(height: 2),
164-
Text(
165-
'加载失败',
166-
style: TextStyle(fontSize: 12),
167-
)
168-
],
169-
),
170-
),
171-
);
172-
},
150+
cache: true,
151+
border: Border.all(color: Colors.grey, width: 1.0),
152+
borderRadius: BorderRadius.all(Radius.circular(8)),
153+
loadStateChanged: (state) => defaultLoadStateChanged(state),
173154
),
174155
),
175156
),

pubspec.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ dependencies:
3030
fluro: ^1.7.7
3131
toast: ^0.1.5
3232
json_serializable: ^3.3.0
33-
cached_network_image: ^2.2.0+1
3433
url_launcher: ^5.7.10
3534
permission_handler: ^5.0.1
3635
barcode_scan: ^3.0.1

0 commit comments

Comments
 (0)