Flutter集成RunetID服务插件runetid_sdk的使用

Flutter集成RunetID服务插件runetid_sdk的使用

特性

包含HTTP客户端

开始使用

从Runet.ID管理器获取API密钥和密钥。

使用示例

以下是一个完整的示例,展示了如何在Flutter应用中集成RunetID服务插件runetid_sdk

首先,确保你已经安装了runetid_sdk包。在你的pubspec.yaml文件中添加以下依赖:

dependencies:
  runetid_sdk: ^版本号

然后运行flutter pub get来安装该依赖。

接下来,创建一个HTTP客户端实例并实现登录和获取用户信息的功能。

import 'package:flutter/material.dart';
import 'package:runetid_sdk/http_client.dart';
import 'package:runetid_sdk/models/login_model.dart';
import 'package:runetid_sdk/models/user.dart';
import 'package:shared_preferences/shared_preferences.dart'; // 导入SharedPreferences用于存储数据

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('RunetID SDK Example')),
        body: Center(child: RunetIDExample()),
      ),
    );
  }
}

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

class _RunetIDExampleState extends State<RunetIDExample> {
  final HttpClient client = HttpClient("your_api_key", "your_api_secret"); // 替换为你的API密钥和密钥
  User? user;

  Future<void> userLogin(LoginModel data) async {
    try {
      var response = await client.post("/user/login", jsonEncode(data.toJson()));

      if (response.statusCode == 200) {
        var r = response.data as Map<String, dynamic>;
        var tokenModel = LoginResponse.fromJson(r['data']);
        var fetchedUser = await userFetchByToken(tokenModel.token);

        if (fetchedUser != null) {
          setState(() {
            user = fetchedUser;
          });
        }
      } else {
        print("登录失败");
      }
    } catch (e) {
      print("请求异常: $e");
    }
  }

  Future<User?> userFetchByToken(String token) async {
    var fetchedUser = await client.user.getUserByToken(token);

    if (fetchedUser == null) {
      return null;
    }

    SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
    sharedPreferences.setString('USER', jsonEncode(fetchedUser.toJson()));
    sharedPreferences.setString('TOKEN', token);
    client.setAuthToken(token);

    return fetchedUser;
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        ElevatedButton(
          onPressed: () {
            // 假设这里有一个表单,需要填写用户名和密码
            LoginModel loginData = LoginModel(username: "example_user", password: "example_password");
            userLogin(loginData);
          },
          child: Text("登录"),
        ),
        SizedBox(height: 20),
        user != null
            ? Text("已登录用户: ${user!.username}")
            : Text("未登录"),
      ],
    );
  }
}

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

1 回复

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


要在Flutter项目中集成RunetID服务插件runetid_sdk,你可以按照以下步骤进行操作:

1. 添加依赖

首先,你需要在pubspec.yaml文件中添加runetid_sdk插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  runetid_sdk: ^1.0.0  # 请根据实际情况填写最新版本号

然后,运行flutter pub get命令来获取依赖。

2. 初始化SDK

main.dart文件中初始化runetid_sdk。通常,你需要在应用启动时进行初始化。

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化RunetID SDK
  await RunetIdSdk.initialize(
    apiKey: 'YOUR_API_KEY',  // 替换为你的API Key
    environment: RunetIdEnvironment.sandbox,  // 选择环境(sandbox或production)
  );
  
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'RunetID Demo',
      home: HomeScreen(),
    );
  }
}

3. 使用RunetID服务

在应用的某个页面中,你可以使用RunetIdSdk提供的功能。例如,进行身份验证或获取用户信息。

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

class HomeScreen extends StatelessWidget {
  Future<void> _authenticate() async {
    try {
      final result = await RunetIdSdk.authenticate();
      print('Authentication successful: ${result.userId}');
    } catch (e) {
      print('Authentication failed: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('RunetID Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _authenticate,
          child: Text('Authenticate with RunetID'),
        ),
      ),
    );
  }
}

4. 处理回调

在某些情况下,你可能需要处理SDK的回调事件,例如身份验证成功或失败。你可以通过监听事件来处理这些情况。

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  @override
  void initState() {
    super.initState();
    RunetIdSdk.onAuthenticationSuccess.listen((result) {
      print('Authentication successful: ${result.userId}');
    });
    RunetIdSdk.onAuthenticationFailure.listen((error) {
      print('Authentication failed: $error');
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('RunetID Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            RunetIdSdk.authenticate();
          },
          child: Text('Authenticate with RunetID'),
        ),
      ),
    );
  }
}

5. 处理不同的环境

在初始化时,你可以选择使用沙盒环境(RunetIdEnvironment.sandbox)或生产环境(RunetIdEnvironment.production)。确保在开发阶段使用沙盒环境,而在发布应用时切换到生产环境。

await RunetIdSdk.initialize(
  apiKey: 'YOUR_API_KEY',
  environment: RunetIdEnvironment.production,  // 切换到生产环境
);

6. 发布前的检查

在发布应用之前,确保你已经正确配置了生产环境的API Key,并且已经测试了所有功能。

7. 处理平台特定的配置

根据runetid_sdk的具体要求,可能需要在Android和iOS项目中添加一些平台特定的配置。请参考插件的官方文档或README文件以获取更多信息。

8. 调试和日志

在开发过程中,你可以启用SDK的调试日志来帮助排查问题。

await RunetIdSdk.initialize(
  apiKey: 'YOUR_API_KEY',
  environment: RunetIdEnvironment.sandbox,
  enableDebugLogs: true,  // 启用调试日志
);

9. 更新SDK

随着插件的更新,你可能需要定期更新SDK以获取最新的功能和安全修复。你可以通过以下命令更新依赖:

flutter pub upgrade runetid_sdk
回到顶部