Flutter阿里云盘SDK插件aliyunpan_sdk的使用
[非官方] 阿里云盘开放平台 SDK
准备工作
👉 如何注册三方开发者
快速开始
添加依赖:
dependencies:
aliyunpan_sdk: ^1.0.12
# 使用阿里云盘客户端登录时, 需要添加此依赖
aliyunpan_flutter_sdk_auth: ^1.0.6
配置:
如果不使用阿里云盘客户端登录, 请跳过配置步骤.
在pubspec.yaml
的aliyunpan
进行一些配置. 具体可以参考pubspec.yaml.
app_id
. 推荐. 它将用于生成iOS的url_scheme和LSApplicationQueriesSchemes.flutter_activity
. 可选. 这个通常是用于Android的冷启动。如果不设置任何值,aliyunpan sdk
将尝试启动launcher activity.
For iOS
如果你在iOS上遇到了 cannot load such file -- plist
, 请按照以下步骤进行操作:
# step.1 安装必要依赖
sudo gem install plist
# step.2 进行iOS文件夹(example/ios/,ios/)
cd example/ios/
# step.3 执行脚本
pod install
For Android
修改applicationId
为你在阿里云盘开放平台注册时填写的应用包名
。参考build.gradle.
使用
认证
import 'package:aliyunpan_flutter_sdk_auth/aliyunpan_flutter_sdk_auth.dart';
import 'package:aliyunpan_sdk/aliyunpan_sdk.dart';
/// 创建阿里云盘客户端
final client = AliyunpanClient(
appId,
refreshTokenFunction: refreshToken,
debug: true,
onTokenChange: (token) => SharedPreferences.getInstance().then((e) {
if (token == null) {
e.remove('key_token');
} else {
e.setString('key_token', jsonEncode(token));
}
}),
);
/// 读取本地存储的token
SharedPreferences.getInstance().then((e) {
final object = e.getString('key_token');
if (object != null) {
client.token = Token.fromJson(jsonDecode(object));
}
});
/// 认证
final credentials = FlutterCredentials.pkce(...);
await client.authorize(credentials);
支持多种认证方式:
FlutterCredentials.pkce
FlutterCredentials.server
FlutterCredentials.secret
Flutter Credentials 使用
阿里云盘客户端
或者WebView
获取授权码, 然后获取 token.
QrcodeCredentials.pkce
QrcodeCredentials.server
QrcodeCredentials.secret
Qrcode Credentials 获取授权二维码, 通过
阿里云盘客户端
扫二维码获取授权码, 然后获取 token.
WebCredentials.server
WebCredentials.secret
Web Credentials 使用
WebView
获取授权码, 然后获取 token.
- pkce(无后端服务授权模式) 不需要
app_secret
和服务端
, 但是不会返回refresh_token
- server 模式需要服务端, 可以获取到
refresh_token
- secret 模式需要
app_secret
, 有暴露app_secret
的风险, 可以获取到refresh_token
发送命令
使用 SDK,你可以轻松使用所有已提供的 OpenAPI 和它们的请求体、返回体模型
await client.send(...);
上传
await client.uploader.enqueue(UploadTask);
监听上传状态
client.uploader.updates.listen((event) {});
下载
await client.downloader.enqueue(DownloadTask);
监听下载状态
client.downloader.updates.listen((event) {});
更多关于Flutter阿里云盘SDK插件aliyunpan_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter阿里云盘SDK插件aliyunpan_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中集成和使用aliyunpan_sdk
插件的示例代码。aliyunpan_sdk
是一个用于阿里云盘的Flutter插件,假设你已经配置好了Flutter开发环境,并且已经在pubspec.yaml
文件中添加了该依赖。
1. 添加依赖
首先,确保你的pubspec.yaml
文件中已经添加了aliyunpan_sdk
依赖:
dependencies:
flutter:
sdk: flutter
aliyunpan_sdk: ^最新版本号 # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
2. 配置阿里云盘SDK
在正式使用之前,你需要到阿里云盘开放平台申请应用的AppKey和AppSecret,并进行相应的配置。
3. 初始化SDK
在你的Flutter应用中,你需要先初始化SDK。通常,这可以在应用的入口文件(如main.dart
)中进行。
import 'package:flutter/material.dart';
import 'package:aliyunpan_sdk/aliyunpan_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化SDK
await AliyunPanSDK.init(
appKey: '你的AppKey', // 替换为你的AppKey
appSecret: '你的AppSecret', // 替换为你的AppSecret
redirectUri: '你的RedirectUri', // 替换为你的RedirectUri
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
4. 使用SDK功能
以下是一个简单的示例,展示如何使用SDK进行用户登录。
import 'package:flutter/material.dart';
import 'package:aliyunpan_sdk/aliyunpan_sdk.dart';
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String _loginStatus = '未登录';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('阿里云盘SDK示例'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'登录状态: $_loginStatus',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () async {
try {
// 触发登录流程
String authUrl = await AliyunPanSDK.getAuthUrl();
// 在实际使用中,你需要在WebView或浏览器中打开这个URL,让用户完成登录授权
// 用户授权后,你会得到一个code,然后使用这个code来换取accessToken
String code = '用户授权后得到的code'; // 这是一个示例,你需要从实际的授权流程中获取这个code
// 使用code换取accessToken
AuthResult authResult = await AliyunPanSDK.authWithCode(code: code);
// 更新登录状态
setState(() {
_loginStatus = '已登录, AccessToken: ${authResult.accessToken}';
});
} catch (e) {
setState(() {
_loginStatus = '登录失败: ${e.message}';
});
}
},
child: Text('登录'),
),
],
),
),
);
}
}
注意事项
-
用户授权流程:在实际应用中,你需要在一个WebView或系统浏览器中打开
getAuthUrl
返回的URL,让用户完成登录授权。授权成功后,你会得到一个授权码(code),然后使用这个code去换取accessToken
。 -
错误处理:SDK调用可能会失败,因此你需要做好错误处理,确保用户有良好的使用体验。
-
安全性:请确保你的AppKey和AppSecret的安全,不要将它们硬编码在客户端代码中。
以上是一个基本的示例,展示了如何在Flutter项目中集成和使用aliyunpan_sdk
插件。根据你的实际需求,你可能需要调用更多的SDK方法来实现完整的功能。