编辑器可以选择 Android Studio、Visual Studio Code 或者 Emacs,编辑器就根据个人喜好和开发习惯选择了。
首先登录 LeanCloud 控制台 [4],创建一个新应用;
在控制台 > 应用 > 设置 >域名绑定页面绑定 API 访问域名。暂时没有域名可以略过这一步,LeanCloud 也提供了短期有效的免费体验域名;或者注册 LeanCloud 国际版 [5],国际版不要求绑定域名。
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.2
leancloud_storage: ^0.4.0
http: ^0.12.0+4
date_format: ^1.0.8
flutter_localizations:
sdk: flutter
fluttertoast: ^4.0.1
shared_preferences: ^0.5.7+3
flutter_markdown: ^0.4.2
date_format: 请假页面用到的日期相关格式化插件 flutter_localizations:用于设置时间选择器的中文显示 fluttertoast:类似 Android 中的 Toast 小插件 shared_preferences:本地数据存储 flutter_markdown:展示周报内容时支持 markdown 格式
APP 初始化设置
初始化 SDK
执行下面的代码连接到在 LeanCloud 创建好的应用。
导入如下包:
import 'package:leancloud_storage/leancloud.dart';
Future initLeanCloud() async {
LeanCloud.initialize(
'AppID', 'AppKey',//AppID 与 AppKey 在控制台设置 > 应用 Keys 页面获取
server: 'https://e36trlaa.lc-cn-n1-shared.com',//这里填控制台绑定的域名或共享 API 域名
queryCache: new LCQueryCache());
}
LCUser user = LCUser();
user.username = 'Tom';
user.password = 'cat!@#123';
await user.signUp();
LCUser user = await LCUser.login('Tom', 'cat!@#123');
LCUser currentUser = await LCUser.getCurrent();
//创建 Class 并保存一条数据,Leave 表用来存放请假员工数据
LCObject leave = LCObject('Leave');
leave['startTime'] = startTime;//请假的开始时间(AM/PM)
leave['endTime'] = endTime;//请假结束时间(AM/PM)
LCUser user = await LCUser.getCurrent();
leave['username'] = user.username;//请假员工用户名
leave['startDate'] = startDate;//请假开始日期
leave['type'] = leaveType;//请假类型,病假、年假或产假等
leave['duration'] = duration;//请假时长
leave['note'] = note;//请假原因
leave['endDate'] = endDate;//请假结束日期
await leave.save();//保存到 LeanCloud 后台
LCUser user = await LCUser.getCurrent();
//查询 Leave 表
LCQuery<LCObject> query = LCQuery('Leave');
query.whereEqualTo('username', user.username);
//按照创建时间排序
query.orderByDescending('createdAt');
//leaves 是当前登录用户的全部请假记录
List<LCObject> leaves = await query.find();
LCQuery<LCObject> query = LCQuery('Leave');
//查找 DateTime.now() 在请假开始日期与结束日期之间的数据
query.whereGreaterThanOrEqualTo('endDate', DateTime.now());
query.whereLessThanOrEqualTo('startDate', DateTime.now());
query.orderByDescending('createdAt');
List<LCObject> leaves = await query.find();
String text = '''
### This week
* done1
* done2
### Next week
* todo1
* todo2
''';
LCUser user = await LCUser.getCurrent();
//WeeklyPub 是存储周报数据的表
LCObject obj = LCObject('WeeklyPub');
obj['content'] = text;
// user 字段是 pointer 类型,指向 _User 表
obj['user'] = user;
LCObject object = await obj.save();
LCQuery<LCObject> query = LCQuery('WeeklyPub');
// 查询结果同时包含用户信息
query.include('user');
query.orderByDescending('createdAt');
query.whereGreaterThanOrEqualTo(
'createdAt', DateTime.parse('2020-06-01 00:00:00Z'));
List<LCObject> weekly = await query.find();
第一步参考 在线编写云函数 [8] 文档,在 LeanCloud 控制台 > 云引擎 > 部署 > 在线编辑 标签页创建云函数。例如我的云函数名是 queryUsers :
AV.Cloud.define('queryUsers', async function (request) {
if (request.currentUser) {
const userQuery = new AV.Query('_User');
userQuery.addDescending('createdAt');
return await userQuery.find();
} else {
throw new AV.Cloud.Error('用户未登录');
}
})
然后点击「部署」按钮,部署到生产环境。
Map<String, dynamic> userMap = await LCCloud.run('queryUsers');
//users 就是云函数返回的用户列表
List<dynamic> users = userMap['result'];
LeanCloud - 数据存储开发指南 · Flutter:https://url.leanapp.cn/Sz0gJPj
Flutter 文档:https://flutter.dev/docs
end
LeanCloud,领先的 BaaS 提供商,为移动开发提供强有力的后端支持。更多内容请关注「LeanCloud 通讯」