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.pkceFlutterCredentials.serverFlutterCredentials.secret
Flutter Credentials 使用
阿里云盘客户端或者WebView获取授权码, 然后获取 token.
QrcodeCredentials.pkceQrcodeCredentials.serverQrcodeCredentials.secret
Qrcode Credentials 获取授权二维码, 通过
阿里云盘客户端扫二维码获取授权码, 然后获取 token.
WebCredentials.serverWebCredentials.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方法来实现完整的功能。

