Skip to main content

Overview

Pub Version

CloudBase Flutter SDK enables you to use CloudBase capabilities in Flutter applications, including authentication, document database, data models, MySQL database, cloud functions, cloud hosting, APIs, and more. For usage, please refer to CloudBase Flutter SDK, or check the sample code.

Note

CloudBase Flutter SDK is fully aligned with HTTP API

SDK is categorized by functionality:

  • Authentication: API methods for user registration and login, supporting multiple login methods.
  • Session Management: API methods for managing user session state and tokens.
  • User Management: API methods for retrieving, updating, and managing user information.
  • Identity Source Management: API methods for managing third-party identity source binding and unbinding.
  • Password Management: API methods for password reset and change.
  • Verification Management: API methods for verification code sending, verification, resending, CAPTCHA creation, verification, and management.
  • Document Database: Operations for NoSQL document database including collections, documents, queries, updates, deletions, aggregation, transactions, and more.
  • Data Model: Data model CRUD operations.
  • Data Source Query: Query data source aggregation list, details, Schema, and table names.
  • MySQL Database: MySQL RESTful database operations.
  • Cloud Functions: Call cloud functions and function-type cloud hosting.
  • Cloud Hosting: Call cloud hosting container services.
  • APIs: Call APIs interfaces.
  • Cloud Storage: File upload, download, delete, copy, move, and other operations.

Basic Usage Example

accessKey can be generated in CloudBase Platform/API Key Configuration

import 'package:cloudbase_flutter/cloudbase_flutter.dart';

// Initialize (async)
final app = await CloudBase.init(
env: 'your-env-id', // Replace with your environment ID
region: 'ap-shanghai', // Region, default is Shanghai
accessKey: 'your-key', // Fill in the generated Publishable Key
authConfig: AuthConfig(
detectSessionInUrl: true, // Optional: automatically detect OAuth parameters in URL
),
);

final auth = app.auth;

Authentication

signUp

Future<SignUpRes> auth.signUp(SignUpReq params)

Register a new user account using smart registration and login flow.

  • Creates a new user account
  • Uses smart registration and login flow: send verification code → wait for user input → smart judgment of user existence → auto login or register and login
  • If user already exists, directly login; if user does not exist, register new user and auto login

参数

params
SignUpReq

返回

Future
SignUpRes

示例


signInAnonymously

Future<SignInRes> auth.signInAnonymously({String? providerToken})

Anonymous login, creates a temporary anonymous user account.

  • Creates a temporary anonymous user account
  • No identity verification info needed
  • Suitable for scenarios requiring temporary access

参数

providerToken
String?

Third-party platform token, used to associate third-party platform identity

返回

Future
SignInRes

示例


signInWithPassword

Future<SignInRes> auth.signInWithPassword(SignInWithPasswordReq params)

Login with password. Supports login via username, email, or phone number.

参数

params
SignInWithPasswordReq

返回

Future
SignInRes

示例


signInWithOtp

Future<SignInWithOtpRes> auth.signInWithOtp(SignInWithOtpReq params)

Login with OTP (one-time verification code). After calling, a verification code will be sent. You need to complete verification through the returned verifyOtp callback.

  • If the user does not exist, a user will be created by default. You can control whether to automatically create a user with the shouldCreateUser parameter (default is true)

参数

params
SignInWithOtpReq

返回

Future
SignInWithOtpRes

示例


signInWithOAuth

Future<SignInOAuthRes> auth.signInWithOAuth(SignInWithOAuthReq params)

Login with OAuth third-party platform. Returns authorization URL, you need to guide the user to redirect to this URL to complete authorization.

参数

params
SignInWithOAuthReq

返回

Future
SignInOAuthRes

示例


signInWithIdToken

Future<SignInRes> auth.signInWithIdToken(SignInWithIdTokenReq params)

Login with IdToken. Suitable for scenarios where third-party platform tokens have been obtained.

参数

params
SignInWithIdTokenReq

返回

Future
SignInRes

示例


signInWithCustomTicket

Future<SignInRes> auth.signInWithCustomTicket(Future<String> Function() getTicketFn)

Login with custom ticket. By passing an async function to get the ticket, the server generates the ticket and completes the login.

参数

getTicketFn
Future<String> Function()

Async function to get custom login ticket

返回

Future
SignInRes

示例


Session Management

getSession

Future<SignInRes> auth.getSession();

Get current session. If token has expired, it will be automatically refreshed.

参数

无参数

返回

Future
SignInRes

示例


refreshSession

Future<SignInRes> auth.refreshSession([String? refreshToken])

Refresh session. Use Refresh Token to get a new Access Token.

参数

refreshToken
String?

Refresh token (optional, defaults to current session's refreshToken)

返回

Future
SignInRes

示例


setSession

Future<SignInRes> auth.setSession(SetSessionReq params)

Set session. Restore session state with Refresh Token.

参数

params
SetSessionReq

返回

Future
SignInRes

示例


signOut

Future<SignOutRes> auth.signOut([SignOutReq? params])

Logout. Clear local session and notify server to revoke token.

参数

params
SignOutReq?

Logout configuration options (optional)

返回

Future
SignOutRes

示例


onAuthStateChange

OnAuthStateChangeResult auth.onAuthStateChange(OnAuthStateChangeCallback callback)

Listen for authentication state changes. Supports listening for login, logout, token refresh, and user update events.

参数

callback
void Function(AuthStateChangeEvent, Session?, AuthStateChangeInfo?)

State change callback function

返回

OnAuthStateChangeResult
OnAuthStateChangeResult

示例


getClaims

Future<GetClaimsRes> auth.getClaims();

Get JWT Claims of current Access Token (token claims).

参数

无参数

返回

Future
GetClaimsRes

示例


User Management

getUser

Future<GetUserRes> auth.getUser();

Get current logged-in user info.

参数

无参数

返回

Future
GetUserRes

示例


refreshUser

Future<SignInRes> auth.refreshUser();

Refresh user info. Re-fetch the latest user data from server and update local session.

参数

无参数

返回

Future
SignInRes

示例


updateUser

Future<UpdateUserRes> auth.updateUser(UpdateUserReq params)

Update user info. If updating email or phone number, verification code verification is required.

参数

params
UpdateUserReq

返回

Future
UpdateUserRes

示例


deleteUser

Future<CloudBaseResponse<void>> auth.deleteUser(DeleteUserReq params)

Delete current user. Password is required for security verification.

参数

params
DeleteUserReq

返回

Future
CloudBaseResponse<void>

示例


Identity Source Management

getUserIdentities

Future<GetUserIdentitiesRes> auth.getUserIdentities();

Get the list of identity sources bound to the current user.

参数

无参数

返回

Future
GetUserIdentitiesRes

示例


linkIdentity

Future<LinkIdentityRes> auth.linkIdentity(LinkIdentityReq params)

Bind third-party identity source. Will redirect to third-party authorization page to complete binding.

参数

params
LinkIdentityReq

返回

Future
LinkIdentityRes

示例


unlinkIdentity

Future<CloudBaseResponse<void>> auth.unlinkIdentity(UnlinkIdentityReq params)

Unbind third-party identity source.

参数

params
UnlinkIdentityReq

返回

Future
CloudBaseResponse<void>

示例


Password Management

resetPasswordForEmail

Future<ResetPasswordForEmailRes> auth.resetPasswordForEmail(String emailOrPhone, {String? redirectTo})

Reset password via email or phone number. After calling, a verification code will be sent. You need to complete password reset through the returned updateUser callback.

参数

emailOrPhone
String

Email or phone number

redirectTo
String?

Redirect URL

返回

Future
ResetPasswordForEmailRes

示例


resetPasswordForOld

Future<SignInRes> auth.resetPasswordForOld(ResetPasswordForOldReq params)

Reset password with old password.

参数

params
ResetPasswordForOldReq

返回

Future
SignInRes

示例


reauthenticate

Future<ReauthenticateRes> auth.reauthenticate();

Re-authenticate. Send verification code to user's email or phone number. After verification, sensitive operations can be performed (such as setting a new password).

参数

无参数

返回

Future
ReauthenticateRes

示例


Verification Management

getVerification

Future<GetVerificationRes> auth.getVerification(GetVerificationReq params)

Send verification code. Supports sending to email or phone number.

参数

params
GetVerificationReq

返回

Future
GetVerificationRes

示例


verify

Future<VerifyRes> auth.verify(VerifyReq params)

Verify verification code (for email/phone verification).

参数

params
VerifyReq

返回

Future
VerifyRes

示例


verifyOAuth

Future<SignInRes> auth.verifyOAuth(VerifyOAuthReq params)

Verify OAuth callback. Handle the callback after user authorization on third-party platform.

参数

params
VerifyOAuthReq

返回

Future
SignInRes

示例


verifyOtp

Future<SignInRes> auth.verifyOtp(VerifyOtpParams params)

Verify OTP (one-time password). Used to verify the verification code sent by signInWithOtp or signUp.

参数

params
VerifyOtpParams

返回

Future
SignInRes

示例


resend

Future<ResendRes> auth.resend(ResendReq params)

Resend verification code.

参数

params
ResendReq

返回

Future
ResendRes

示例


getCaptchaToken

Future<GetCaptchaTokenRes> auth.getCaptchaToken()

Get CAPTCHA token. Used to get CAPTCHA verification token before sending verification code.

参数

无参数

返回

Future
GetCaptchaTokenRes

示例


createCaptchaData

Future<CreateCaptchaDataRes> auth.createCaptchaData(CreateCaptchaDataReq params)

Create CAPTCHA verification data. Used to initialize CAPTCHA challenge.

参数

params
CreateCaptchaDataReq

返回

Future
CreateCaptchaDataRes

示例


verifyCaptchaData

Future<VerifyCaptchaDataRes> auth.verifyCaptchaData(VerifyCaptchaDataReq params)

Verify CAPTCHA. Validate user's CAPTCHA response.

参数

params
VerifyCaptchaDataReq

返回

Future
VerifyCaptchaDataRes

示例


clearCaptchaToken

Future<ClearCaptchaTokenRes> auth.clearCaptchaToken()

Clear CAPTCHA token. Clean up CAPTCHA state after verification.

参数

无参数

返回

Future
ClearCaptchaTokenRes

示例


Document Database

The document database (NoSQL) provides JS SDK-style chained calls, and you get an instance via app.database(). It supports create, read, update, and delete operations on collections and documents, complex conditional queries, aggregation, transactions, and more, and is fully aligned with the HTTP API.

final app = await CloudBase.init(env: 'your-env-id');
final db = app.database();

// Add a single record
final addRes = await db.collection('todos').add({
'title': 'Learn CloudBase',
'completed': false,
'createdAt': DateTime.now(),
});
print('New document ID: ${addRes.id}');

database

CloudBaseDatabase app.database({String? instance, String? database})

Gets a document database instance. The optional parameters instance (instance ID) and database (database name) specify the database to access. Both can be omitted, in which case (default) is used (the default database of the default instance). You only need to pass them explicitly when accessing a non-default instance or database.

参数

instance
String?

Instance ID, defaults to (default)

database
String?

Database name, defaults to (default)

返回

CloudBaseDatabase
CloudBaseDatabase

Database instance, providing capabilities such as collection, command, Geo, and startTransaction

示例


createCollection

Future<DbCreateCollectionResult> db.createCollection(String collName)

Creates a collection.

参数

collName
String

Collection name

返回

Future
DbCreateCollectionResult

示例


collection

CollectionReference db.collection(String collName)

Gets a collection reference, on which you can chain query methods such as where, orderBy, limit, skip, and field, or call doc, add, get, count, and aggregate.

参数

collName
String

Collection name

返回

CollectionReference
CollectionReference

Collection reference

示例


add

Future<DbAddResult> collection.add(dynamic data)

Adds records to a collection, supporting single (Map) and batch (List) additions.

参数

data
dynamic

Document data. Pass a Map for a single addition, or a List for batch addition

返回

Future
DbAddResult

示例


doc

DocumentReference collection.doc(dynamic docId)

Gets a document reference, on which you can call get, update, set, remove, and field.

参数

docId
dynamic

Document ID

返回

DocumentReference
DocumentReference

Document reference

示例


where

Query collection.where(Map<String, dynamic> condition)

Sets query conditions, supporting equality matching and complex condition filtering via db.command operators.

参数

condition
Map<String, dynamic>

Query condition object, supporting equality matching, operator matching, nested field matching, and more

返回

Query
Query

Query object, on which you can chain methods such as orderBy, limit, skip, field, get, count, update, and remove

示例


orderBy

Query collection.orderBy(String field, OrderDirection direction)

Sets the sort rule. direction can be OrderDirection.asc or OrderDirection.desc. You can call it multiple times to combine multi-field sorting.

参数

field
String

Sort field

direction
OrderDirection

Sort direction: OrderDirection.asc (ascending) or OrderDirection.desc (descending)

返回

Query
Query

Query object, on which you can continue chaining

示例


limit

Query collection.limit(int max)

Sets the maximum number of records to return.

参数

max
int

Maximum number of records to return

返回

Query
Query

Query object, on which you can continue chaining

示例


skip

Query collection.skip(int offset)

Sets the number of records to skip, commonly used for pagination.

参数

offset
int

Number of records to skip (offset)

返回

Query
Query

Query object, on which you can continue chaining

示例


field

Query collection.field(Map<String, dynamic> projection)

Specifies the fields to return in the query. true means return, and false means do not return. The document reference doc also supports the field method.

参数

projection
Map<String, dynamic>

Field projection, e.g. {'title': true, 'content': false}

返回

Query
Query

Query object, on which you can continue chaining

示例


get

Future<DbGetResult> collection.get()
Future<DbGetResult> query.get()
Future<DbGetResult> doc.get()

Gets query results. Called on a collection reference, it performs an unconditional query; called on a Query, it returns the list of matching documents; called on a document reference, it returns a single document (data is an empty list when the document does not exist).

参数

无参数

返回

Future
DbGetResult

示例


count

Future<DbCountResult> collection.count()
Future<DbCountResult> query.count()

Counts the number of documents matching the conditions.

参数

无参数

返回

Future
DbCountResult

示例


update

Future<DbUpdateResult> query.update(Map<String, dynamic> data)
Future<DbUpdateResult> doc.update(Map<String, dynamic> data, {bool returnDoc = false})

Updates documents. Called on a Query, it batch-updates documents matching the conditions; called on a document reference, it performs a merge update on a single document, and returns the updated document when returnDoc is true.

参数

data
Map<String, dynamic>

Update data. You can use db.command update operators (such as _.inc, _.set, _.push, etc.)

returnDoc
bool

Supported only by document reference update. When true, returns the updated document. Defaults to false

返回

Future
DbUpdateResult

示例


set

Future<DbUpdateResult> doc.set(Map<String, dynamic> data)

Sets document data (full replacement; creates the document if it does not exist).

参数

data
Map<String, dynamic>

Full document data, which will completely replace the original document

返回

Future
DbUpdateResult

示例


remove

Future<DbRemoveResult> query.remove()
Future<DbRemoveResult> doc.remove()

Deletes documents. Called on a Query, it batch-deletes documents matching the conditions; called on a document reference, it deletes a single document.

参数

无参数

返回

Future
DbRemoveResult

示例


command

DbCommand get db.command

Gets the query/update command (corresponding to the JS SDK's db.command, commonly abbreviated as _). It supports comparison, logical, field/array, update, geolocation, and other operators.

参数

无参数

返回

DbCommand
DbCommand

Command object, used to build query conditions and update operations

示例


aggregate

Aggregate collection.aggregate()

Gets an aggregation operation object. Chain aggregation stages and then call end() to execute. Supports match, group, sort, project, limit, skip, unwind, lookup, addFields, count, sample, bucket, bucketAuto, geoNear, replaceRoot, sortByCount, and custom stage.

参数

无参数

返回

Aggregate
Aggregate

Aggregation operation object. Chain stages and then call end() to execute

示例


startTransaction

Future<Transaction> db.startTransaction()

Starts a transaction and returns a transaction object. Use the transaction object's collection to get a collection reference within the transaction to operate on, and finally call commit to commit or rollback to roll back.

参数

无参数

返回

Future
Transaction

示例


runCommands

Future<DbRunCommandsResult> db.runCommands({required List<Map<String, dynamic>> commands, String? transactionId})

Executes native MongoDB database commands (in batch). Callable by administrators only.

参数

commands
List<Map<String, dynamic>>

Array of command objects

transactionId
String?

Transaction ID (optional, executes all commands within the transaction)

返回

Future
DbRunCommandsResult

示例


Geo

GeoNamespace get db.Geo
DbRegExp db.RegExp({required String regexp, String? options})
DbServerDate db.serverDate({int offset = 0})

Database helper types: the geolocation namespace Geo, the regular expression RegExp, and the server-side time serverDate.

  • Geo supports point, lineString, polygon, multiPoint, multiLineString, and multiPolygon, used together with the operators geoNear, geoWithin, and geoIntersects.
  • RegExp is used for fuzzy queries; options such as i means case-insensitive.
  • serverDate generates server-side time, where offset is the offset in milliseconds.

参数

无参数

返回

GeoNamespace
GeoNamespace

Geolocation namespace

示例


Data Model

getById

Future<GetByIdRes> app.data.model(collectionName).getById(String id)

Get a single record by ID.

参数

id
String

Record ID

返回

Future
GetByIdRes

示例


get

Future<GetRes> app.data.model(collectionName).get([GetReq? params])

Query records with filters. Supports WHERE conditions, sorting, pagination, etc.

参数

params
GetReq?

Query parameters (optional)

返回

Future
GetRes

示例


list

Future<ModelFindManyResponse> app.models.list({
required String modelName,
Map<String, dynamic>? filter,
Map<String, dynamic>? select,
int? pageSize,
int? pageNumber,
bool? getCount,
List<Map<String, String>>? orderBy,
})

Query multiple records. Supports filter conditions, field selection, pagination, and sorting.

参数

modelName
String

Data model identifier

filter
Map<String, dynamic>?

Filter condition, format: {'where': {'field': {'\$eq': 'value'}}}

select
Map<String, dynamic>?

Field selection, format: {'\$master': true} or {'field': true}

pageSize
int?

Page size, default 10

pageNumber
int?

Page number, default 1

getCount
bool?

Whether to return total count

orderBy
List<Map<String, String>>?

Sorting, up to 3 fields, format: [{'field': 'desc'}]

返回

Future
ModelFindManyResponse

示例


listSimple

Future<ModelFindManyResponse> app.models.listSimple({required String modelName, int? pageSize, int? pageNumber, bool? getCount})

Simple query for multiple records (GET request, only supports pagination parameters).

参数

modelName
String

Data model identifier

pageSize
int?

Page size

pageNumber
int?

Page number, default 1

getCount
bool?

Whether to return total count, default false

返回

Future
ModelFindManyResponse

示例


create

Future<ModelCreateResponse> app.models.create({required String modelName, required Map<String, dynamic> data})

Create a single record.

参数

modelName
String

Data model identifier

data
Map<String, dynamic>

Record data

返回

Future
ModelCreateResponse

示例


createMany

Future<ModelCreateManyResponse> app.models.createMany({required String modelName, required List<Map<String, dynamic>> data})

Batch create records.

参数

modelName
String

Data model identifier

data
List<Map<String, dynamic>>

List of records to create

返回

Future
ModelCreateManyResponse

示例


update

Future<ModelUpdateDeleteResponse> app.models.update({required String modelName, required Map<String, dynamic> filter, required Map<String, dynamic> data})

Update a single record.

参数

modelName
String

Data model identifier

filter
Map<String, dynamic>

Filter condition

data
Map<String, dynamic>

Data to update

返回

Future
ModelUpdateDeleteResponse

示例


updateMany

Future<ModelUpdateDeleteManyResponse> app.models.updateMany({required String modelName, required Map<String, dynamic> filter, required Map<String, dynamic> data})

Batch update records.

参数

modelName
String

Data model identifier

filter
Map<String, dynamic>

Filter condition

data
Map<String, dynamic>

Data to update

返回

Future
ModelUpdateDeleteManyResponse

示例


upsert

Future<ModelUpsertResponse> app.models.upsert({required String modelName, required Map<String, dynamic> filter, Map<String, dynamic>? create, Map<String, dynamic>? update})

Create or update a single record (Upsert). If a matching record is found, it will be updated; otherwise, a new record will be created.

参数

modelName
String

Data model identifier

filter
Map<String, dynamic>

Filter condition

create
Map<String, dynamic>?

Data to create when record does not exist

update
Map<String, dynamic>?

Data to update when record already exists

返回

Future
ModelUpsertResponse

示例


deleteById

Future<ModelUpdateDeleteResponse> app.models.deleteById({required String modelName, required String recordId})

Delete a single record by ID.

参数

modelName
String

Data model identifier

recordId
String

Record ID

返回

Future
ModelUpdateDeleteResponse

示例


deleteRecord

Future<ModelUpdateDeleteResponse> app.models.deleteRecord({required String modelName, required Map<String, dynamic> filter})

Delete a single record by condition.

参数

modelName
String

Data model identifier

filter
Map<String, dynamic>

Filter condition

返回

Future
ModelUpdateDeleteResponse

示例


deleteMany

Future<ModelUpdateDeleteManyResponse> app.models.deleteMany({required String modelName, required Map<String, dynamic> filter})

Batch delete records.

参数

modelName
String

Data model identifier

filter
Map<String, dynamic>

Filter condition

返回

Future
ModelUpdateDeleteManyResponse

示例


mysqlCommand

Future<ModelMysqlCommandResponse> app.models.mysqlCommand({required String sqlTemplate, List<ModelMysqlParameter>? parameter, ModelMysqlConfig? config})

Execute MySQL commands. Supports parameterized queries.

参数

sqlTemplate
String

SQL statement, supports parameter placeholders {{ var }}

parameter
List<ModelMysqlParameter>?

SQL parameter list

config
ModelMysqlConfig?

Execution config (timeout, preparedStatements, dbLinkName)

返回

Future
ModelMysqlCommandResponse

示例


Data Source Queries

getAggregateDataSourceList

Future<AggregateDataSourceListResponse> app.models.getAggregateDataSourceList({
List<String>? idList,
List<String>? nameList,
int? pageSize,
int? pageNumber,
bool? getCount,
List<Map<String, String>>? orderBy,
})

Query aggregate data source list (GET request, supports pagination and sorting).

参数

idList
List<String>?

Data source ID list

nameList
List<String>?

Data source name list

pageSize
int?

Page size, default 10

pageNumber
int?

Page number, default 1

getCount
bool?

Whether to return total count

orderBy
List<Map<String, String>>?

Sorting, format: [{'field': 'desc'}]

返回

Future
AggregateDataSourceListResponse

示例


getDataSourceAggregateDetail

Future<DataSourceAggregateDetailResponse> app.models.getDataSourceAggregateDetail({
String? datasourceId,
String? dataSourceName,
String? viewId,
int? queryPublish,
bool? queryModelRelation,
String? dbInstanceType,
String? databaseTableName,
})

Query aggregate data source detail by conditions. datasourceId and dataSourceName cannot both be empty.

参数

datasourceId
String?

Data source ID (cannot both be empty with dataSourceName)

dataSourceName
String?

Data source name (cannot both be empty with datasourceId)

viewId
String?

View ID

queryPublish
int?

Query published data source (0: preview, 1: published)

queryModelRelation
bool?

Whether to query relation

dbInstanceType
String?

DB instance type

databaseTableName
String?

Database table name

返回

Future
DataSourceAggregateDetailResponse

示例


getDataSourceByTableName

Future<DataSourceByTableNameResponse> app.models.getDataSourceByTableName({required List<String> tableNames})

Query data source schema definition by database table name.

参数

tableNames
List<String>

Database table name list

返回

Future
DataSourceByTableNameResponse

示例


getBasicDataSourceList

Future<BasicDataSourceListResponse> app.models.getBasicDataSourceList({
List<String>? idList,
List<String>? nameList,
int? pageNum,
int? pageSize,
bool? queryAll,
List<DataSourceQueryFilter>? queryFilterList,
bool? onlyFlexDb,
})

Query basic data source list by conditions (POST request, supports filter conditions).

参数

idList
List<String>?

Data source ID list

nameList
List<String>?

Data source name list

pageNum
int?

Page number, default 1

pageSize
int?

Page size, default 10

queryAll
bool?

Whether to query all

queryFilterList
List<DataSourceQueryFilter>?

Query filter list

onlyFlexDb
bool?

Whether to query only flexdb type

返回

Future
BasicDataSourceListResponse

示例


getBasicDataSource

Future<BasicDataSourceResponse> app.models.getBasicDataSource({
String? datasourceId,
String? dataSourceName,
String? viewId,
int? queryPublish,
bool? queryModelRelation,
String? dbInstanceType,
String? databaseTableName,
})

Query basic data source info by conditions. datasourceId and dataSourceName cannot both be empty.

参数

datasourceId
String?

Data source ID (cannot both be empty with dataSourceName)

dataSourceName
String?

Data source name (cannot both be empty with datasourceId)

viewId
String?

View ID

queryPublish
int?

Query published data source (0: preview, 1: published)

queryModelRelation
bool?

Whether to query relation

dbInstanceType
String?

DB instance type

databaseTableName
String?

Database table name

返回

Future
BasicDataSourceResponse

示例


getSchemaList

Future<DataSourceSchemaListResponse> app.models.getSchemaList({List<String>? dataSourceNameList})

Query all data source schemas in the environment. If no parameters are provided, all schemas are returned.

参数

dataSourceNameList
List<String>?

Data source name list (optional, query all if not provided)

返回

Future
DataSourceSchemaListResponse

示例


getTableName

Future<DataSourceTableNameResponse> app.models.getTableName({String? dataSourceName})

Query the corresponding database table name by data source name.

参数

dataSourceName
String?

Data source name

返回

Future
DataSourceTableNameResponse

示例


MySQL Database

query

Future<MySqlResponse> app.mysql.query({required String table, String? schema, String? instance, MySqlQueryOptions? options})

Query MySQL data. Supports field selection, pagination, sorting, and filter conditions.

Supported filter operators: eq (equal), neq (not equal), gt (greater than), gte (greater than or equal), lt (less than), lte (less than or equal), like (fuzzy match), in (in list), is (null check)

参数

table
String

Table name

schema
String?

Database name

instance
String?

Database instance identifier (requires schema)

options
MySqlQueryOptions?

Query options

返回

Future
MySqlResponse

示例


insert

Future<MySqlWriteResponse> app.mysql.insert({required String table, required dynamic data, String? schema, String? instance, bool? upsert, String? onConflict})

Insert data. Supports single and batch insert, as well as Upsert mode.

参数

table
String

Table name

data
dynamic

Insert data, single Map or batch List<Map>

schema
String?

Database name

instance
String?

Database instance identifier

upsert
bool?

Whether to enable Upsert mode (default false)

onConflict
String?

Upsert conflict field

返回

Future
MySqlWriteResponse

示例


update (MySQL)

Future<MySqlWriteResponse> app.mysql.update({required String table, required Map<String, dynamic> data, required Map<String, String> filters, String? schema, String? instance})

Update MySQL data. WHERE condition is required.

参数

table
String

Table name

data
Map<String, dynamic>

Data to update

filters
Map<String, String>

WHERE condition (cannot be empty)

schema
String?

Database name

instance
String?

Database instance identifier

返回

Future
MySqlWriteResponse

示例


delete (MySQL)

Future<MySqlWriteResponse> app.mysql.delete({required String table, required Map<String, String> filters, String? schema, String? instance})

Delete MySQL data. WHERE condition is required.

参数

table
String

Table name

filters
Map<String, String>

WHERE condition (cannot be empty)

schema
String?

Database name

instance
String?

Database instance identifier

返回

Future
MySqlWriteResponse

示例


count

Future<MySqlCountResponse> app.mysql.count({required String table, Map<String, String>? filters, String? schema, String? instance})

Count MySQL data records.

参数

table
String

Table name

filters
Map<String, String>?

Filter conditions

schema
String?

Database name

instance
String?

Database instance identifier

返回

Future
MySqlCountResponse

示例


Cloud Functions

callFunction

Future<FunctionResponse> app.callFunction({
required String name,
FunctionType? type,
Map<String, dynamic>? data,
HttpMethod? method,
String? path,
Map<String, String>? header,
bool? parse,
})

Call cloud function. Supports both basic cloud functions and function-type cloud run.

参数

name
String

Function/service name

type
FunctionType?

Call type: FunctionType.function (default) / FunctionType.cloudrun

data
Map<String, dynamic>?

Request data

method
HttpMethod?

HTTP method (only valid for cloudrun type, default POST)

path
String?

HTTP path (only valid for cloudrun type, default /)

header
Map<String, String>?

HTTP headers (only valid for cloudrun type)

parse
bool?

Whether to parse return object (only valid for function type, default true)

返回

Future
FunctionResponse

示例


Cloud Run

callContainer

Future<CloudRunResponse> app.callContainer({
required String name,
HttpMethod? method,
String? path,
Map<String, String>? header,
Map<String, dynamic>? data,
})

Call cloud run container service. Supports custom HTTP method, path, and headers.

参数

name
String

Cloud run service name

method
HttpMethod?

HTTP request method (default GET)

path
String?

HTTP request path (default /)

header
Map<String, String>?

HTTP request headers

data
Map<String, dynamic>?

HTTP request body

返回

Future
CloudRunResponse

示例


APIs

apis[name]

ApiMethodProxy app.apis[String apiName]

Call API gateway interface. Supports accessing API proxy objects via subscript operator for chained calls. Supports GET, POST, PUT, DELETE, HEAD, OPTIONS, PATCH methods.

参数

apiName
String

API name

返回

ApiMethodProxy
ApiMethodProxy

API method proxy object, supports chained calls

ApiResponse
ApiResponse

API response

示例


Cloud Storage

Cloud Storage module provides file upload, download, delete, copy, move and other operations.

Initialization

final app = await CloudBase.init(
env: 'your-env-id',
accessKey: 'your-access-key',
);

final storage = app.storage.from();

upload

Future<StorageResponse<StorageUploadResult>> storage.upload(
String path,
List<int> fileData, {
StorageUploadOptions? options,
})

Upload file to cloud storage. This method will first get upload info, then upload file to COS, and finally return fileID.

参数

path
String

Cloud storage relative path, e.g. `images/photo.jpg`.

fileData
List<int>

File byte data.

options
StorageUploadOptions

Upload options.

返回

data.id
String?

CloudBase fileID.

data.path
String?

Upload path.

data.fullPath
String?

File full path.

error
StorageError?

Error message.

示例


getUploadInfo

Future<StorageResponse<List<StorageUploadInfo>>> storage.getUploadInfo(
List<String> paths,
)

Get file upload info. Returns upload URL and other info for client to directly upload files to COS.

参数

paths
List<String>

File path list (cloud storage relative path).

返回

data
List<StorageUploadInfo>?

Upload info list.

error
StorageError?

Error message.

示例


getDownloadUrls

Future<StorageResponse<List<StorageDownloadInfo>>> storage.getDownloadUrls(
List<String> fileIds, {
int? expiresIn,
})

Get file download URLs.

参数

fileIds
List<String>

File ID list (full cloudObjectId, e.g. `cloud://envId.xxx/path/file.jpg`).

expiresIn
int?

Reserved parameter, current API does not support custom expiration time.

返回

data
List<StorageDownloadInfo>?

Download info list.

error
StorageError?

Error message.

示例


createSignedUrl

Future<StorageResponse<String>> storage.createSignedUrl(
String fileId,
int expiresIn,
)

Create signed URL (temporary access link).

参数

fileId
String

Full fileID.

expiresIn
int

Expiration time (seconds).

返回

data
String?

Signed URL.

error
StorageError?

Error message.

示例


createSignedUrls

Future<StorageResponse<List<StorageDownloadInfo>>> storage.createSignedUrls(
List<String> fileIds,
int expiresIn,
)

Batch create signed URLs.

参数

fileIds
List<String>

Full fileID list.

expiresIn
int

Expiration time (seconds).

返回

data
List<StorageDownloadInfo>?

Download info list.

error
StorageError?

Error message.

示例


remove

Future<StorageResponse<List<StorageDeleteResult>>> storage.remove(
List<String> fileIds,
)

Delete files.

参数

fileIds
List<String>

File ID list to delete (full fileID).

返回

data
List<StorageDeleteResult>?

Delete result list.

error
StorageError?

Error message.

示例


copy

Future<StorageResponse<StorageCopyResult>> storage.copy(
String fromPath,
String toPath, {
bool overwrite = true,
})

Copy file.

参数

fromPath
String

Source file path (relative path).

toPath
String

Target file path (relative path).

overwrite
bool

Whether to overwrite if target exists, default `true`.

返回

data
StorageCopyResult?

Copy result.

error
StorageError?

Error message.

示例


copyBatch

Future<StorageResponse<List<StorageCopyResult>>> storage.copyBatch(
List<Map<String, dynamic>> items,
)

Batch copy files.

参数

items
List<Map<String, dynamic>>

Copy item list, each item contains `srcPath` and `dstPath`.

返回

data
List<StorageCopyResult>?

Copy result list.

error
StorageError?

Error message.

示例


move

Future<StorageResponse<StorageCopyResult>> storage.move(
String fromPath,
String toPath, {
bool overwrite = true,
})

Move file (implemented by copy + removeOriginal).

参数

fromPath
String

Source file path (relative path).

toPath
String

Target file path (relative path).

overwrite
bool

Whether to overwrite if target exists, default `true`.

返回

data
StorageCopyResult?

Move result.

error
StorageError?

Error message.

示例


StorageUploadOptions

Upload options:

ParameterTypeDescription
cacheControlString?Cache control, e.g. max-age=3600
contentTypeString?File MIME type, e.g. image/jpeg
metadataMap<String, dynamic>?Custom metadata
upsertboolWhether to overwrite existing file, default true

StorageUploadResult

Upload result:

ParameterTypeDescription
idString?CloudBase fileID
pathString?Upload path
fullPathString?File full path

StorageUploadInfo

Upload info:

ParameterTypeDescription
pathString?File path
uploadUrlString?Upload URL
tokenString?Upload token
authorizationString?Upload authorization
fileIdString?File ID
cosFileIdString?COS file ID
codeString?Error code
messageString?Error message

StorageDownloadInfo

Download info:

ParameterTypeDescription
fileIdString?File ID
downloadUrlString?Download URL
codeString?Error code (on partial failure)
messageString?Error message (on partial failure)

StorageDeleteResult

Delete result:

ParameterTypeDescription
fileIdString?File ID
codeString?Error code (on partial failure)
messageString?Error message (on partial failure)

StorageCopyResult

Copy result:

ParameterTypeDescription
cloudObjectIdString?Cloud file ID of copied object
codeString?Error code (on partial failure)
messageString?Error message (on partial failure)

StorageResponse<T>

Storage response:

ParameterTypeDescription
dataT?Response data
errorStorageError?Error message

StorageError

Storage error:

ParameterTypeDescription
codeString?Error code
messageString?Error message
requestIdString?Request ID

Changelog

1.2.0 (2026-07-24)

  • Add NoSQL Database module (CloudBaseDatabase) with JS-SDK-style chainable API
    • db.collection().doc() document references
    • Chainable query: where / orderBy / limit / skip / field
    • CRUD: add (single & batch), get, count, update, set, remove
    • Query/update commands via db.command: comparison (eq/gt/gte/lt/lte/neq/in/nin), logic (and/or/not/nor), update operators (set/inc/mul/remove/push/pull/pop/shift/unshift/addToSet/rename/max/min)
    • Aggregation pipeline via collection().aggregate()...end()
    • Transactions via db.startTransaction() with commit / rollback
    • Geo types (GeoPoint/GeoLineString/GeoPolygon/GeoMultiPoint/GeoMultiLineString/GeoMultiPolygon) and geo queries
    • RegExp, serverDate helpers and automatic EJSON encode/decode (e.g. DateTime)
    • Raw MongoDB commands via runCommands

1.1.0 (2026-07-01)

  • Add Cloud Storage module (CloudBaseStorage)
    • Upload files to cloud storage with upload info and direct COS upload
    • Get signed download URLs (single and batch)
    • Delete files (batch)
    • Copy files (single and batch)
    • Move/rename files
    • Get upload info for client-side direct upload

1.0.9 (2026-06-30)

  • Add X-SDK-Version header (@cloudbase/flutter-sdk/<version>) to all HTTP requests for platform identification
  • Add version management tooling (tool/update_version.dart) to auto-sync version from pubspec.yaml
  • Add CONTRIBUTING.md with release workflow documentation
  • Improve HTTP client to support List request body (for storage APIs)

1.0.8 (2026-05-06)

  • Fix UserProfile.toUser() incorrectly falling back to username (phone number) when email is null, which caused reauthentication to send an invalid email format to the server
  • Fix reauthenticate() to properly distinguish between empty string and valid email, ensuring phone-only users use phone number for verification instead of invalid email

1.0.7 (2026-03-11)

  • Add shouldCreateUser option to signInWithOtp for auto-registration when user does not exist
  • Refactor internal signup logic into reusable _signUpAndSaveSession method

1.0.6 (2026-03-05)

  • Add MySQL module (CloudBaseMySQL)
    • Direct SQL query execution
    • Transaction support (begin, commit, rollback)
    • Database/table management operations
  • Add example code for MySQL modules
  • Add unit tests for MySQL modules

1.0.5 (2026-03-05)

  • Add Data Model module (CloudBaseDataModel)
    • CRUD operations with filter, select, orderBy, expand support
    • Batch create/update/delete operations
    • Upsert support
    • Raw MySQL command execution
    • DataSource query APIs (aggregate list, detail, schema, table name)
  • Refactor HTTP client with token auto-refresh and improved documentation
  • Add example code for Data Model
  • Add unit tests for Data Model

1.0.4 (2026-01-16)

  • Add example code

1.0.3 (2026-01-16)

  • Update README documentation

1.0.2 (2026-01-15)

  • Fix HTTP client not handling empty token string correctly

1.0.1 (2026-01-15)

  • Improve README documentation with complete authentication API usage

1.0.0 (2026-01-15)

  • Initial release
  • Authentication module (CloudBaseAuth)
    • Email/phone registration and sign-in
    • Password sign-in
    • OTP verification sign-in
    • OAuth third-party sign-in
    • IdToken sign-in
    • Custom ticket sign-in
    • Anonymous sign-in
    • Session management (get, refresh, set)
    • User information management
    • Identity provider binding/unbinding
    • Password reset
  • Cloud Functions module (CloudBaseFunctions)
    • Basic cloud function invocation
    • Function-based cloud run invocation
  • Cloud Run module (CloudBaseCloudRun)
    • HTTP methods support (GET/POST/PUT/DELETE)
    • Custom request headers
  • API Gateway module (CloudBaseApis)
    • Chained calls
    • Multiple HTTP methods support
  • Captcha module (CloudBaseCaptcha)
    • Image captcha
    • Custom captcha handler
    • Built-in captcha dialog