forked from lxm_tools/flutter-picgo
refactor:增加ImageUpload,改用策略模式上传图片
This commit is contained in:
52
lib/utils/image_upload.dart
Normal file
52
lib/utils/image_upload.dart
Normal file
@@ -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<Uploaded> delete(Uploaded uploaded) {
|
||||
return _strategy.delete(uploaded);
|
||||
}
|
||||
|
||||
Future<Uploaded> upload(File file, String renameImage) {
|
||||
return _strategy.upload(file, renameImage);
|
||||
}
|
||||
|
||||
/// 获取默认图床类型
|
||||
Future<String> 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<int> 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<String> 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"];
|
||||
}
|
||||
}
|
||||
}
|
||||
17
lib/utils/strategy/github_image_upload.dart
Normal file
17
lib/utils/strategy/github_image_upload.dart
Normal file
@@ -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<Uploaded> delete(Uploaded uploaded) async {
|
||||
return null;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Uploaded> upload(File file, String renameImage) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
11
lib/utils/strategy/image_upload_strategy.dart
Normal file
11
lib/utils/strategy/image_upload_strategy.dart
Normal file
@@ -0,0 +1,11 @@
|
||||
import 'dart:io';
|
||||
import 'package:flutter_picgo/model/uploaded.dart';
|
||||
|
||||
abstract class ImageUploadStrategy {
|
||||
|
||||
/// 上传照片,根据策略来实现上传的图片
|
||||
Future<Uploaded> upload(File file, String renameImage);
|
||||
|
||||
Future<Uploaded> delete(Uploaded uploaded);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user