An official flutter plugin for LeanCloud real-time message service based on LeanCloud-Swift-SDK and LeanCloud-Java-SDK.

Flutter Getting Started

This project is a starting point for a Flutter plug-in package, a specialized package that includes platform-specific implementation code for Android and iOS.

For help getting started with Flutter, view online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.


Adding dependency

  1. Following this document to add leancloud_official_plugin to your app, like this:

       leancloud_official_plugin: '>=x.y.z <(x+1).0.0'    # Recommend using up-to-next-major policy.
  2. Using Gradle and CocoaPods to add platform-specific dependencies.


  1. import package:leancloud_official_plugin/leancloud_plugin.dart in lib/main.dart of your project, like this:

     import 'package:leancloud_official_plugin/leancloud_plugin.dart';
  2. import cn.leancloud.AVOSCloud, cn.leancloud.AVLogger and cn.leancloud.im.AVIMOptions in YourApplication.java of your project, then set up ID, Key and URL, like this:

     import io.flutter.app.FlutterApplication;
     import cn.leancloud.AVOSCloud;
     import cn.leancloud.AVLogger;
     import cn.leancloud.im.AVIMOptions;
     public class YourApplication extends FlutterApplication {
       public void onCreate() {
         AVOSCloud.initialize(this, YOUR_LC_APP_ID, YOUR_LC_APP_KEY, YOUR_LC_SERVER_URL);
  3. import LeanCloud in AppDelegate.swift of your project, then set up ID, Key and URL, like this:

     import Flutter
     import LeanCloud
     @objc class AppDelegate: FlutterAppDelegate {
       override func application(
         _ application: UIApplication,
         didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
       ) -> Bool {
         do {
           LCApplication.logLevel = .all
           try LCApplication.default.set(
             id: YOUR_LC_APP_ID,
             key: YOUR_LC_APP_KEY,
             serverURL: YOUR_LC_SERVER_URL)
           GeneratedPluginRegistrant.register(with: self)
           return super.application(application, didFinishLaunchingWithOptions: launchOptions)
         } catch {

Sample Code

After initialization, you can write some sample code and run it to check whether initializing success, like this:


// new an IM client
Client client = Client(id: CLIENT_ID);
// open it
await client.open();

Query Conversations

// the ID of the conversation instance list
List<String> objectIDs = [...];
// new query from an opened client
ConversationQuery query = client.conversationQuery();
// set query condition
Map whereMap = {
  'objectId': {
    '\$in': objectIDs,
query.whereString = jsonEncode(whereMap);
query.limit = objectIDs.length;
// do the query
List<Conversation> conversations = await query.find();