Skip to content

Commit 03dbf3a

Browse files
authored
Merge pull request #18 from PicGo/dev
build:build 1.9.2+24
2 parents 8795c60 + b01bf49 commit 03dbf3a

17 files changed

+132
-481
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
<blockquote>图片上传+管理新体验 </blockquote>
55
<img src="https://img.shields.io/github/license/hackycy/flutter-picgo" alt="">
66
<img src="https://img.shields.io/github/workflow/status/hackycy/flutter-picgo/Build and Release apk" alt="">
7-
<img src="https://img.shields.io/github/repo-size/hackycy/flutter-picgo" alt="">
8-
<img src="https://img.shields.io/github/v/release/hackycy/flutter-picgo" alt="">
7+
<img src="https://img.shields.io/github/issues-closed/hackycy/flutter-picgo" alt="">
8+
<img src="https://img.shields.io/github/v/release/hackycy/flutter-picgo?include_prereleases" alt="">
99
<img src="https://img.shields.io/github/downloads/hackycy/flutter-picgo/total" alt="">
1010
</div>
1111

docs/version.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"versionCode": "22"
55
},
66
"Android": {
7-
"versionName": "1.9.1",
8-
"versionCode": "22"
7+
"versionName": "1.9.2",
8+
"versionCode": "23"
99
}
1010
}

lib/components/upload_item/upload_item_presenter.dart

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import 'dart:io';
22
import 'package:dio/dio.dart';
3-
import 'package:flutter/cupertino.dart';
43
import 'package:flutter_picgo/utils/image_upload.dart';
54
import 'package:flutter_picgo/utils/strategy/upload_strategy_factory.dart';
65

lib/routers/router_handler.dart

-6
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import 'package:flutter_picgo/views/pb_setting_page/tcyun_page/tcyun_page.dart';
1919
import 'package:flutter_picgo/views/pb_setting_page/upyun_page/upyun_page.dart';
2020
import 'package:flutter_picgo/views/picgo_setting_page/theme_setting_page.dart';
2121
import 'package:flutter_picgo/views/upload_page/handle_upload_page.dart';
22-
import 'package:flutter_picgo/views/upload_page/upload_page.dart';
2322
import 'package:flutter_picgo/views/pb_setting_page/github_page/github_page.dart';
2423
import 'package:flutter_picgo/views/picgo_setting_page/picgo_setting_page.dart';
2524
import 'package:flutter_picgo/views/setting_page/setting_page.dart';
@@ -56,11 +55,6 @@ var settingHandler = new Handler(
5655
);
5756

5857
// 上传页面
59-
var uploadHandler = new Handler(
60-
handlerFunc: (BuildContext context, Map<String, List<String>> params) =>
61-
UploadPage(),
62-
);
63-
6458
var preUploadHandler = new Handler(
6559
handlerFunc: (context, parameters) {
6660
final assets = context.settings.arguments as List<AssetEntity>;

lib/routers/routers.dart

-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ class Routes {
5050
router.define(root, handler: appHandler);
5151
router.define(notfound, handler: notfoundHandler);
5252
router.define(album, handler: albumHandler);
53-
router.define(upload, handler: uploadHandler);
5453
router.define(handleUpload, handler: preUploadHandler);
5554
router.define(setting, handler: settingHandler);
5655
router.define(settingPb, handler: pbsettingHandler);

lib/utils/db_provider.dart

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import 'dart:io';
2-
import 'package:flutter/foundation.dart';
32
import 'package:flutter_picgo/resources/pb_type_keys.dart';
43
import 'package:flutter_picgo/resources/table_name_keys.dart';
54
import 'package:sqflite/sqflite.dart';

lib/utils/image_preview.dart

+101-55
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ import 'dart:math';
44
import 'package:extended_image/extended_image.dart';
55
import 'package:flutter/material.dart';
66
import 'package:flutter/services.dart';
7+
import 'package:flutter_picgo/model/uploaded.dart';
78
import 'package:flutter_picgo/utils/extended.dart';
89
import 'package:toast/toast.dart';
910

1011
class ImagePreviewUtils {
1112
/// 打开图片预览页面
12-
static void open(BuildContext context, String content) {
13-
var item = new GalleryItem(id: '0', resource: '$content');
13+
static void open(BuildContext context, Uploaded content) {
1414
var page = GalleryPhotoViewWrapper(
15-
galleryItems: [item],
15+
galleryItems: [content],
1616
);
1717
Navigator.push(
1818
context,
@@ -22,8 +22,7 @@ class ImagePreviewUtils {
2222
);
2323
}
2424

25-
static void openMulti(
26-
BuildContext context, int index, List<GalleryItem> items) {
25+
static void openMulti(BuildContext context, int index, List<Uploaded> items) {
2726
var page = GalleryPhotoViewWrapper(
2827
galleryItems: items,
2928
initialIndex: index,
@@ -36,16 +35,9 @@ class ImagePreviewUtils {
3635
}
3736
}
3837

39-
class GalleryItem {
40-
GalleryItem({this.id, this.resource});
41-
42-
final String id;
43-
final String resource;
44-
}
45-
4638
class GalleryPhotoViewWrapper extends StatefulWidget {
4739
final int initialIndex;
48-
final List<GalleryItem> galleryItems;
40+
final List<Uploaded> galleryItems;
4941

5042
GalleryPhotoViewWrapper({
5143
this.initialIndex = 0,
@@ -85,44 +77,67 @@ class _GalleryPhotoViewWrapperState extends State<GalleryPhotoViewWrapper> {
8577
color: Colors.black,
8678
pageGestureAxis: SlideAxis.both),
8779
child: GestureDetector(
88-
child: ExtendedImageGesturePageView.builder(
89-
itemBuilder: (BuildContext context, int index) {
90-
var item = widget.galleryItems[index];
91-
Widget image = item.resource.startsWith('http')
92-
? ExtendedImage.network(
93-
item.resource,
94-
fit: BoxFit.contain,
95-
cache: true,
96-
mode: ExtendedImageMode.gesture,
97-
enableSlideOutPage: true,
98-
loadStateChanged: (state) =>
99-
defaultLoadStateChanged(state, iconSize: 50),
100-
)
101-
: ExtendedImage.file(
102-
File(item.resource),
103-
fit: BoxFit.contain,
104-
mode: ExtendedImageMode.gesture,
105-
enableSlideOutPage: true,
106-
loadStateChanged: (state) =>
107-
defaultLoadStateChanged(state, iconSize: 50),
80+
child: Stack(
81+
// fit: StackFit.expand,
82+
alignment: Alignment.bottomRight,
83+
children: [
84+
ExtendedImageGesturePageView.builder(
85+
itemBuilder: (BuildContext context, int index) {
86+
var item = widget.galleryItems[index];
87+
Widget image = item.path.startsWith('http')
88+
? ExtendedImage.network(
89+
item.path,
90+
fit: BoxFit.contain,
91+
cache: true,
92+
mode: ExtendedImageMode.gesture,
93+
enableSlideOutPage: true,
94+
loadStateChanged: (state) =>
95+
defaultLoadStateChanged(state, iconSize: 50),
96+
)
97+
: ExtendedImage.file(
98+
File(item.path),
99+
fit: BoxFit.contain,
100+
mode: ExtendedImageMode.gesture,
101+
enableSlideOutPage: true,
102+
loadStateChanged: (state) =>
103+
defaultLoadStateChanged(state, iconSize: 50),
104+
);
105+
image = Container(
106+
child: image,
107+
);
108+
if (index == currentIndex) {
109+
return Hero(
110+
tag: index,
111+
child: image,
108112
);
109-
image = Container(
110-
child: image,
111-
);
112-
if (index == currentIndex) {
113-
return Hero(
114-
tag: index,
115-
child: image,
116-
);
117-
} else {
118-
return image;
119-
}
120-
},
121-
itemCount: widget.galleryItems.length,
122-
controller: PageController(
123-
initialPage: currentIndex,
124-
),
125-
scrollDirection: Axis.horizontal,
113+
} else {
114+
return image;
115+
}
116+
},
117+
itemCount: widget.galleryItems.length,
118+
controller: PageController(
119+
initialPage: currentIndex,
120+
),
121+
onPageChanged: onPageChanged,
122+
scrollDirection: Axis.horizontal,
123+
),
124+
SafeArea(
125+
child: Container(
126+
margin: EdgeInsets.only(right: 10),
127+
decoration: BoxDecoration(
128+
borderRadius: BorderRadius.all(Radius.circular(4)),
129+
color: Colors.grey),
130+
padding: EdgeInsets.fromLTRB(5, 2, 5, 2),
131+
child: Text(
132+
'${currentIndex + 1} / ${widget.galleryItems.length}',
133+
style: TextStyle(
134+
color: Colors.white,
135+
decoration: TextDecoration.none,
136+
fontWeight: FontWeight.normal,
137+
fontSize: 10),
138+
),
139+
))
140+
],
126141
),
127142
onLongPress: () {
128143
_showBottomPane();
@@ -142,9 +157,41 @@ class _GalleryPhotoViewWrapperState extends State<GalleryPhotoViewWrapper> {
142157
mainAxisSize: MainAxisSize.min,
143158
children: [
144159
ListTile(
145-
title: Text('复制链接'),
160+
title: Text(
161+
'图床类型',
162+
style: TextStyle(fontWeight: FontWeight.bold),
163+
),
164+
subtitle: Text(widget.galleryItems[currentIndex].type),
165+
),
166+
ListTile(
167+
title: Text(
168+
'图片链接',
169+
style: TextStyle(fontWeight: FontWeight.bold),
170+
),
171+
subtitle: Text(widget.galleryItems[currentIndex].path),
172+
onTap: () {
173+
_handleCopy(
174+
widget.galleryItems[currentIndex].path, context);
175+
},
176+
),
177+
ListTile(
178+
title: Text(
179+
'图片信息',
180+
style: TextStyle(fontWeight: FontWeight.bold),
181+
),
182+
subtitle: Text(widget.galleryItems[currentIndex].info),
183+
onTap: () {
184+
_handleCopy(
185+
widget.galleryItems[currentIndex].info, context);
186+
},
187+
),
188+
ListTile(
189+
title: Text(
190+
'取消',
191+
style: TextStyle(fontWeight: FontWeight.bold),
192+
),
146193
onTap: () {
147-
_handleCopy(context);
194+
Navigator.pop(context);
148195
},
149196
),
150197
],
@@ -154,9 +201,8 @@ class _GalleryPhotoViewWrapperState extends State<GalleryPhotoViewWrapper> {
154201
}
155202

156203
/// 复制链接
157-
_handleCopy(BuildContext context) {
158-
Clipboard.setData(
159-
ClipboardData(text: widget.galleryItems[currentIndex].resource));
204+
_handleCopy(String content, BuildContext context) {
205+
Clipboard.setData(ClipboardData(text: content));
160206
Toast.show('已复制到剪切板', context);
161207
Navigator.pop(context);
162208
}

lib/utils/local_notification.dart

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import 'dart:io';
22

3-
import 'package:flutter/material.dart';
43
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
54

65
class LocalNotificationUtil {

lib/utils/strategy/impl/tcyun_image_upload.dart

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import 'dart:convert';
22

33
import 'package:dio/dio.dart';
4-
import 'package:flutter/foundation.dart';
54
import 'package:flutter_picgo/api/tcyun_api.dart';
65
import 'package:flutter_picgo/model/tcyun_config.dart';
76
import 'package:flutter_picgo/model/uploaded.dart';

lib/views/album_page/album_page.dart

+1-6
Original file line numberDiff line numberDiff line change
@@ -197,12 +197,7 @@ class _AlbumPageState extends State<AlbumPage> implements AlbumPageContract {
197197

198198
/// 处理图片点击事件
199199
handleTap(int index) {
200-
ImagePreviewUtils.openMulti(
201-
context,
202-
index,
203-
_uploadeds.map((e) {
204-
return GalleryItem(id: e.id.toString(), resource: e.path);
205-
}).toList());
200+
ImagePreviewUtils.openMulti(context, index, _uploadeds);
206201
}
207202

208203
/// 处理图片双击

lib/views/manage_page/qiniu_page/qiniu_repo_page_presenter.dart

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import 'dart:convert';
22

3-
import 'package:flutter/foundation.dart';
43
import 'package:flutter_picgo/api/qiniu_api.dart';
54
import 'package:flutter_picgo/components/manage_item.dart';
65
import 'package:flutter_picgo/model/qiniu_config.dart';

lib/views/pb_setting_page/pb_setting_presenter.dart

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import 'dart:convert';
22

3-
import 'package:flutter/material.dart';
43
import 'package:flutter_picgo/model/pb_setting.dart';
54
import 'package:flutter_picgo/resources/table_name_keys.dart';
65
import 'package:flutter_picgo/utils/image_upload.dart';

lib/views/picgo_setting_page/picgo_setting_page.dart

+22-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:io';
22

33
import 'package:dio/dio.dart';
4+
import 'package:extended_image/extended_image.dart';
45
import 'package:fluro/fluro.dart';
56
import 'package:flutter/material.dart';
67
import 'package:flutter/cupertino.dart';
@@ -120,10 +121,6 @@ class _PicGoSettingPageState extends State<PicGoSettingPage> {
120121
transition: TransitionType.cupertino);
121122
},
122123
),
123-
// ListTile(
124-
// title: Text('设置显示图床'),
125-
// onTap: () {},
126-
// ),
127124
ListTile(
128125
title: Text('版本更新'),
129126
onTap: () {
@@ -141,6 +138,12 @@ class _PicGoSettingPageState extends State<PicGoSettingPage> {
141138
),
142139
),
143140
),
141+
ListTile(
142+
title: Text('清除缓存'),
143+
onTap: () {
144+
_handleClearCache();
145+
},
146+
)
144147
],
145148
);
146149
},
@@ -181,4 +184,19 @@ class _PicGoSettingPageState extends State<PicGoSettingPage> {
181184
launch('https://apps.apple.com/cn/app/flutter-picgo/id1519714305');
182185
}
183186
}
187+
188+
/// 清空缓存
189+
_handleClearCache() async {
190+
/// extended_image
191+
try {
192+
bool clear = await clearDiskCachedImages();
193+
if (clear) {
194+
Toast.show('清除成功', context);
195+
} else {
196+
throw ('clear fail');
197+
}
198+
} catch (e) {
199+
Toast.show('清除失败', context);
200+
}
201+
}
184202
}

lib/views/upload_page/handle_upload_page.dart

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import 'dart:io';
2-
import 'dart:math';
32
import 'package:flutter_picgo/components/upload_item/upload_item.dart';
43
import 'package:flutter_picgo/utils/strings.dart';
54
import 'package:path/path.dart' as path;
@@ -116,15 +115,15 @@ class _HandleUploadPageState extends State<HandleUploadPage> {
116115
sp.getBool(SharedPreferencesKeys.settingIsTimestampRename) ?? false;
117116

118117
if (settingIsTimestampRename) {
118+
int timestamp = new DateTime.now().millisecondsSinceEpoch;
119+
119120
/// 处理时间戳命名
120-
var random = Random();
121121
for (int i = 0; i < widget.assets.length; i++) {
122122
/// 获取图片名
123123
String suffix = path.extension(tmp.path);
124124

125125
/// replace
126-
filesName[i] =
127-
'${new DateTime.now().millisecondsSinceEpoch.toString()}-${random.nextInt(100)}$suffix';
126+
filesName[i] = '${timestamp + i}$suffix';
128127
}
129128
}
130129
var settingIsUploadedRename =

0 commit comments

Comments
 (0)