Flutter集成MBaaS服务插件mburger的使用

发布于 1周前 作者 zlyuanteng 来自 Flutter

Flutter集成MBaaS服务插件mburger的使用

MBurger-Flutter

MBurger Flutter客户端。您可以使用此库与MBurger平台进行交互。

如果您是MBurger的新用户,可以使用以下教程作为起点:如何将内容传递到您的Flutter应用

MBurger Logo

安装

您可以通过pub安装MBurger SDK,请在pubspec.yaml文件中添加以下内容:

dependencies:
  mburger: ^2.0.0

然后从命令行安装包:

flutter pub get

初始化

要初始化SDK,您需要通过dashboard创建一个API密钥。点击顶部右角的设置图标并创建一个API密钥,指定权限。

然后,在main.dart中使用创建的密钥初始化MBManager,如下所示:

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    MBManager.shared.apiToken = "YOUR_API_TOKEN";

    super.initState();
  }
}

所有用于检索对象的功能都在MBManager单例中,这些是异步函数,并返回Future对象。如果请求过程中出现错误,SDK将抛出一个MBException,包含错误的状态码和消息。

获取项目信息

你可以这样获取项目的相关信息:

MBProject project = await MBManager.shared.getProject();

如果你想要包括合同设置includeContracts参数为true

MBProject project = await MBManager.shared.getProject(includeContracts: true);

获取块信息

你可以使用MBManager.shared.getBlocks()函数来获取块的信息:

MBPaginatedResponse<MBBLock> blocks = await MBManager.shared.getBlocks();

参数parameters是一个可选的对象数组,它必须符合MBParameter协议,这些参数将作为MBurger API的参数传递。

大多数可以传递给API的参数已经在SDK中实现,可以在初始化后使用:

  • MBSortParameter
  • MBPaginationParameter
  • MBFilterParameter
  • MBGeofenceParameter

如果你想传递另一种类型的参数,可以使用MBGeneralParameter类初始化,该类可以接受键和值,这些值将被传递给API。

例如,如果你想传递分页参数:

MBPaginationParameter paginationParam =
    MBPaginationParameter(skip: 0, take: 10);
MBPaginatedResponse<MBBlock> blocks =
    await MBManager.shared.getBlocks(parameters: [paginationParam]);

如果你想设置includeSections参数以获取块中的部分,以及includeElements参数以获取部分中的元素,你可以这样做:

MBPaginationParameter paginationParam =
    MBPaginationParameter(skip: 0, take: 10);
MBPaginatedResponse<MBBlock> blocks = await MBManager.shared.getBlocks(
      parameters: [paginationParam],
      includeSections: true,
      includeElements: true,
);

获取部分信息

你可以使用MBManager.shared.getSections()函数来获取块中的部分信息:

MBPaginatedResponse<MBSection> sections =
    await MBManager.shared.getSections(blockId: THE_BLOCK_ID);

参数parameters是一个MBParameter对象数组,如前所述。

如果你想获取块中的所有部分及其元素,可以这样做:

MBPaginatedResponse<MBSection> sections =
    await MBManager.shared.getSections(
        blockId: THE_BLOCK_ID,
        includeElements: true,
    );

媒体

你可以通过其ID检索存储在MBurger上的媒体:

MBMedia media = await MBManager.shared.getMedia(MEDIA_ID);

要检索保存在MBurger的所有媒体,可以使用这个函数:

List<MBMedia> media = await MBManager.shared.getAllMedia();

MBAdmin

如果你需要在你的MBurger项目中创建块和部分,可以使用随此SDK提供的MBAdmin包。

import 'package:mburger/mb_admin/mb_admin.dart';

添加或编辑部分

你可以使用MBAdmin.shared.addSectionToBlock()函数来添加或编辑部分。

首先,你需要创建一个数组,其中包含遵循MBUploadableElementProtocol的元素。

使用MBUploadableElementsFactory分配一个本地标识符,并创建具有该本地标识符的对象。

MBUploadableElementsFactory factory = MBUploadableElementsFactory('it');
List<MBUploadableElement> elements = [
  factory.createTextElement('name', 'text'),
  factory.createImageElement(
    'image',
    '/path/to/image',
    MediaType.parse('img/jpg'),
  )
];
MBAdmin.shared.addSectionToBlock(BLOCK_ID, elements);

删除部分

删除部分可以通过提供部分ID来完成:

await MBAdmin.shared.deleteSection(SECTION_ID);

上传媒体

你可以使用MBAdmin.shared.uploadMedia(FILE_PATH)MBAdmin.shared.uploadMediaList([FILE_PATH1, FILE_PATH2])函数上传媒体或媒体列表到MBurger的媒体中心。

删除媒体

删除媒体(图片或视频)可以通过提供媒体ID来完成:

await MBAdmin.shared.deleteMedia(mediaId);

MBAuth

所有的认证API都包含在MBAuth包中。

你可以注册用户、验证用户并获取其信息。

import 'package:mburger/mb_auth/mb_auth.dart';

await MBAuth.registerUser(
  'name',
  'surname',
  'email',
  'password',
  phone: '1234567890',
  image: null,
  data: null,
);

认证用户

使用电子邮件和密码验证用户:

await MBAuth.authenticateUser('email', 'password');

社交登录

MBurger支持使用社交网络进行用户认证。当前支持的社交网络有:

  • Google
  • Facebook
  • Apple

检查用户是否已登录

你可以使用MBAuth.userLoggedIn()检查用户是否已登录。如果用户已登录,可以使用MBAuth.userToken()获取访问令牌,否则返回null

登出用户

使用MBAuth.logoutCurrentUser()登出当前用户。

获取用户信息

你可以使用MBAuth.getUserProfile()获取当前用户的详细信息。

更新用户资料

你可以更新当前用户的部分资料。成功后返回更新后的用户对象。

MBurger文档

你可以在这里找到MBurger的文档:MBurger文档

示例代码

import 'package:flutter/material.dart';
import 'package:mburger/mburger.dart';

void main() {
  MBManager.shared.apiToken = 'YOUR_API_TOKEN';
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'MBurger Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: const MBurgerExample(),
    );
  }
}

class MBurgerExample extends StatelessWidget {
  const MBurgerExample({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('MBurger Example'),
      ),
      body: Center(
        child: Column(
          mainAxisSize: MainAxisSize.max,
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            MaterialButton(
              child: const Text('Get project'),
              onPressed: () =&gt; _getProject(),
            ),
            MaterialButton(
              child: const Text('Get block'),
              onPressed: () =&gt; _getBlock(),
            ),
            MaterialButton(
              child: const Text('Get section'),
              onPressed: () =&gt; _getSection(),
            )
          ],
        ),
      ),
    );
  }

  /// Retrieves the project connected to the token
  void _getProject() async {
    try {
      MBProject project = await MBManager.shared.getProject();
      debugPrint(project.toString());
    } catch (error) {
      debugPrint(error.toString());
    }
  }

  /// Retrieves all the sections of a block with the id passed
  void _getBlock() async {
    try {
      MBBlock block = await MBManager.shared.getBlock(
        blockId: 1,
        includeElements: true,
      );

      debugPrint(block.toString());
    } catch (error) {
      debugPrint(error.toString());
    }
  }

  /// Retrieves a sections with the id passed
  void _getSection() async {
    try {
      MBSection section = await MBManager.shared.getSection(
        sectionId: 1,
        includeElements: true,
      );
      debugPrint(section.toString());
    } catch (error) {
      debugPrint(error.toString());
    }
  }
}

更多关于Flutter集成MBaaS服务插件mburger的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter集成MBaaS服务插件mburger的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter项目中集成MBaaS服务插件mburger,可以通过以下几个步骤实现。这里假设你已经有一个Flutter项目,并且熟悉基本的Flutter开发流程。我们将通过具体的代码案例来展示如何集成和使用mburger插件。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加mburger插件的依赖。确保你的Flutter环境是最新的,然后运行以下命令来更新依赖:

dependencies:
  flutter:
    sdk: flutter
  mburger: ^最新版本号  # 替换为mburger插件的最新版本号

然后在项目根目录下运行:

flutter pub get

2. 配置mburger

在集成mburger之前,你需要在mburger官网创建一个应用并获取相应的API Key和App ID。

3. 初始化mburger客户端

在你的Flutter应用的入口文件(通常是main.dart)中,初始化mburger客户端。

import 'package:flutter/material.dart';
import 'package:mburger/mburger.dart';

void main() {
  // 初始化mburger客户端
  MBurger.instance.init(
    apiKey: '你的API_KEY',
    appId: '你的APP_ID',
    debug: true, // 如果是开发环境,设置为true;生产环境设置为false
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('mburger 集成示例'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            // 示例:获取用户信息
            try {
              User? user = await MBurger.instance.getUser();
              print('User: $user');
            } catch (e) {
              print('Error fetching user: $e');
            }
          },
          child: Text('获取用户信息'),
        ),
      ),
    );
  }
}

4. 使用mburger服务

一旦mburger客户端初始化完成,你就可以在应用的任何地方使用mburger提供的各种服务,比如获取用户信息、发布内容、处理推送通知等。

获取用户信息

在上面的示例中,我们已经展示了如何获取用户信息。MBurger.instance.getUser()方法会返回一个User对象,包含当前用户的信息。

发布内容

下面是一个发布内容的示例:

import 'package:mburger/models/mb_post.dart';

// ...

ElevatedButton(
  onPressed: () async {
    try {
      MBPost post = MBPost(
        text: '这是一个新的帖子',
        mediaType: MBMediaType.TEXT, // 或者其他媒体类型,如图片、视频等
      );
      await MBurger.instance.createPost(post);
      print('Post created successfully');
    } catch (e) {
      print('Error creating post: $e');
    }
  },
  child: Text('发布内容'),
),

5. 处理推送通知

为了处理推送通知,你需要在你的AndroidManifest.xmliOS配置文件中进行相应的设置,并确保mburger的推送服务已经正确集成。这里不展开详细说明,但你可以参考mburger的官方文档来获取详细的推送集成指南。

结论

通过上述步骤,你应该能够在Flutter项目中成功集成并使用mburger插件。mburger提供了丰富的后端即服务(MBaaS)功能,可以大大简化移动应用的开发过程。如果你需要更详细的信息或高级功能,请参考mburger的官方文档。

回到顶部