From 75603d854b51a6f919c65690393fc8cb959d8be0 Mon Sep 17 00:00:00 2001 From: hackycy Date: Mon, 22 Jun 2020 18:31:28 +0800 Subject: [PATCH] =?UTF-8?q?refactor=EF=BC=9A=E5=A2=9E=E5=8A=A0ImageUpload?= =?UTF-8?q?=EF=BC=8C=E6=94=B9=E7=94=A8=E7=AD=96=E7=95=A5=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/utils/image_upload.dart | 52 +++++++++++++++++++ lib/utils/strategy/github_image_upload.dart | 17 ++++++ lib/utils/strategy/image_upload_strategy.dart | 11 ++++ 3 files changed, 80 insertions(+) create mode 100644 lib/utils/image_upload.dart create mode 100644 lib/utils/strategy/github_image_upload.dart create mode 100644 lib/utils/strategy/image_upload_strategy.dart diff --git a/lib/utils/image_upload.dart b/lib/utils/image_upload.dart new file mode 100644 index 0000000..cdef451 --- /dev/null +++ b/lib/utils/image_upload.dart @@ -0,0 +1,52 @@ +import 'dart:io'; +import 'package:flutter_picgo/model/uploaded.dart'; +import 'package:flutter_picgo/resources/table_name_keys.dart'; +import 'package:flutter_picgo/utils/shared_preferences.dart'; +import 'package:flutter_picgo/utils/sql.dart'; +import 'package:flutter_picgo/utils/strategy/image_upload_strategy.dart'; + +/// 图像上传类 +class ImageUpload { + ImageUploadStrategy _strategy; + + ImageUpload(this._strategy); + + Future delete(Uploaded uploaded) { + return _strategy.delete(uploaded); + } + + Future upload(File file, String renameImage) { + return _strategy.upload(file, renameImage); + } + + /// 获取默认图床类型 + Future getDefaultPB() async { + var sp = await SpUtil.getInstance(); + String pbType = sp.getDefaultPB(); + return pbType; + } + + /// 设置默认图床 + Future setDefaultPB(String type) async { + var sp = await SpUtil.getInstance(); + if (sp.getDefaultPB() != type) { + sp.setDefaultPB(type); + } + } + + /// 保存图床配置 + Future savePBConfig(String type, String config) async { + var sql = Sql.setTable(TABLE_NAME_PBSETTING); + int raw = await sql.rawUpdate('config = ? WHERE type = ?', [config, type]); + return raw; + } + + /// 获取当前图床配置 + Future getPBConfig(String type) async { + var sql = Sql.setTable(TABLE_NAME_PBSETTING); + var pbsettingRow = await sql.getBySql('type = ?', [type]); + if (pbsettingRow != null && pbsettingRow.length > 0) { + return pbsettingRow.first["config"]; + } + } +} diff --git a/lib/utils/strategy/github_image_upload.dart b/lib/utils/strategy/github_image_upload.dart new file mode 100644 index 0000000..03b32db --- /dev/null +++ b/lib/utils/strategy/github_image_upload.dart @@ -0,0 +1,17 @@ +import 'package:flutter_picgo/model/uploaded.dart'; +import 'dart:io'; + +import 'package:flutter_picgo/utils/strategy/image_upload_strategy.dart'; + +class GithubImageUpload implements ImageUploadStrategy { + + @override + Future delete(Uploaded uploaded) async { + return null; + } + + @override + Future upload(File file, String renameImage) { + return null; + } +} diff --git a/lib/utils/strategy/image_upload_strategy.dart b/lib/utils/strategy/image_upload_strategy.dart new file mode 100644 index 0000000..8822629 --- /dev/null +++ b/lib/utils/strategy/image_upload_strategy.dart @@ -0,0 +1,11 @@ +import 'dart:io'; +import 'package:flutter_picgo/model/uploaded.dart'; + +abstract class ImageUploadStrategy { + + /// 上传照片,根据策略来实现上传的图片 + Future upload(File file, String renameImage); + + Future delete(Uploaded uploaded); + +} \ No newline at end of file