Flutter标签管理插件wiatag_kit的使用

Flutter标签管理插件wiatag_kit的使用

wiatag_kit 是一个基于Gurtam开发的原生SDK的插件,可以帮助你将应用转换为WiaTag设备。你可以通过这个插件与WiaTag设备进行通信。

有关WiaTag的更多信息,请访问:

开始使用

首先,你需要定义服务器的主机和端口。这个服务器可以是Wialon Hosting、Wialon Local或Flespi。在这个示例中,我们将使用Wialon Hosting。

例如,这是我们的WiaTag单元在Wialon中的配置:

Wialon Unit form

接下来,设置服务器的过程如下:

import 'package:wiatag_kit/wiatag_kit.dart';

WiaTagKit plugin = WiaTagKit();

WiatagServer server = WiatagServer(
  host: 'nl.gpsgsm.org',
  port: 20963,
  unitId: 'wiatag_flutter',
  password: '', 
  hasCommands: true,
  commandListener: const Duration(seconds: 30),
);

plugin.setServer(server); // Future<bool?> setServer(WiatagServer server)

发送消息

你可以通过以下方式发送一条消息:

WiatagMessage message = WiatagMessage(
  latitude: 10,
  longitude: 10,
  // ... 查看WiatagMessage类以获取更多选项
);

plugin.sendMessage(message); // Future<bool?> sendMessage(WiatagMessage message)

发送SOS

你可以通过以下方式发送SOS:

plugin.sendSOS(); // Future<bool?> sendSOS()

// 或者,你可以添加一条消息到SOS
WiatagMessage message = WiatagMessage(
  latitude: 10,
  longitude: 10,
  // ... 查看WiatagMessage类以获取更多选项
);
plugin.sendSOS(message); // Future<bool?> sendSOS([WiatagMessage? message])

发送文本消息

你可以通过以下方式发送一条文本消息:

plugin.sendText('Hello, World!'); // Future<bool?> sendText(String text)

// 或者,你可以添加一条消息到文本
WiatagMessage message = WiatagMessage(
  latitude: 10,
  longitude: 10,
  // ... 查看WiatagMessage类以获取更多选项
);
plugin.sendText('Hello, World!', message); // Future<bool?> sendText(String text, [WiatagMessage? message])

如何监听命令?

你可以通过以下方式添加监听器来接收命令:

plugin.addListener((WiatagCommand command) {
  // 对命令执行某些操作
});

完整示例

以下是完整的示例代码,展示了如何使用wiatag_kit插件:

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final _plugin = WiatagKit();

  WiatagServer get server => const WiatagServer(
        host: "nl.gpsgsm.org",
        port: 20963,
        unitId: "wiatag_flutter",
        password: "",
        commandListener: Duration(seconds: 5),
      );

  WiatagMessage get message => const WiatagMessage(
        latitude: 10,
        longitude: 10,
      );

  [@override](/user/override)
  void initState() {
    super.initState();

    _plugin.setServer(server);
    _plugin.addListener((command) {
      debugPrint("Command received: $command");
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Column(
          children: [
            const Text("设置WiatagServer"),
            ElevatedButton(
              onPressed: () async {
                await _plugin.setServer(server);
              },
              child: const Text("设置WiatagServer"),
            ),
            const SizedBox(height: 16),
            const Text("获取WiatagServer"),
            ElevatedButton(
              onPressed: () async {
                final result = await _plugin.getServer();
                debugPrint("WiatagServer: $result");
              },
              child: const Text("获取WiatagServer"),
            ),
            const SizedBox(height: 16),
            const Text("发送SOS"),
            ElevatedButton(
              onPressed: () async {
                await _plugin.sendSos();
              },
              child: const Text("发送SOS"),
            ),
            const SizedBox(height: 16),
            const Text("发送带有信息的SOS"),
            ElevatedButton(
              onPressed: () async {
                await _plugin.sendSos(message.copyWith(
                  extra: {"last.will": "HELP ME!"},
                ));
              },
              child: const Text("发送带有信息的SOS"),
            ),
            const SizedBox(height: 16),
            const Text("发送文本"),
            ElevatedButton(
              onPressed: () async {
                await _plugin.sendText("Hello, World!");
              },
              child: const Text("发送文本"),
            ),
            const SizedBox(height: 16),
            const Text("发送带有信息的文本"),
            ElevatedButton(
              onPressed: () async {
                await _plugin.sendText("Hello, World!", message);
              },
              child: const Text("发送带有信息的文本"),
            ),
            const SizedBox(height: 16),
            const Text("发送WiatagMessage"),
            ElevatedButton(
              onPressed: () async {
                await _plugin.sendMessage(message);
              },
              child: const Text("发送WiatagMessage"),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter标签管理插件wiatag_kit的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter标签管理插件wiatag_kit的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


wiatag_kit 是一个 Flutter 插件,用于在 Flutter 应用中集成 WiaTag 标签管理功能。WiaTag 通常用于物联网(IoT)设备的管理和跟踪。使用这个插件,你可以在 Flutter 应用中轻松地管理设备标签、监控设备状态以及执行其他与 WiaTag 相关的操作。

以下是如何在 Flutter 项目中使用 wiatag_kit 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  wiatag_kit: ^1.0.0  # 请使用最新版本

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

2. 初始化插件

在你的 Dart 代码中,导入 wiatag_kit 并初始化插件。通常,你会在 main.dart 文件中进行初始化:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 WiaTagKit
  await WiaTagKit.initialize(
    apiKey: 'YOUR_API_KEY',  // 替换为你的 API 密钥
    baseUrl: 'https://api.wiatag.com',  // 替换为你的 API 基础 URL
  );
  
  runApp(MyApp());
}

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

3. 使用插件功能

现在你可以在应用中调用 wiatag_kit 提供的功能。以下是一些常见的操作示例:

获取设备标签

Future<void> fetchDeviceTags() async {
  try {
    List<DeviceTag> tags = await WiaTagKit.getDeviceTags();
    // 处理标签数据
    print(tags);
  } catch (e) {
    // 处理错误
    print('Failed to fetch device tags: $e');
  }
}

添加设备标签

Future<void> addDeviceTag() async {
  try {
    DeviceTag newTag = DeviceTag(
      name: 'New Tag',
      description: 'This is a new tag',
      // 其他属性
    );
    await WiaTagKit.addDeviceTag(newTag);
    print('Device tag added successfully');
  } catch (e) {
    print('Failed to add device tag: $e');
  }
}

删除设备标签

Future<void> deleteDeviceTag(String tagId) async {
  try {
    await WiaTagKit.deleteDeviceTag(tagId);
    print('Device tag deleted successfully');
  } catch (e) {
    print('Failed to delete device tag: $e');
  }
}

4. 处理事件和监听器

wiatag_kit 还可能提供事件监听功能,例如设备状态变化、位置更新等。你可以通过注册监听器来响应这些事件:

void setupEventListeners() {
  WiaTagKit.onDeviceStatusChanged.listen((status) {
    // 处理设备状态变化
    print('Device status changed: $status');
  });

  WiaTagKit.onLocationUpdated.listen((location) {
    // 处理位置更新
    print('Location updated: $location');
  });
}

5. 清理和释放资源

在应用退出或不再需要 wiatag_kit 时,确保释放资源:

void dispose() {
  WiaTagKit.dispose();
}

6. 处理权限

某些功能可能需要特定的权限(例如位置访问权限)。确保在应用中正确处理这些权限:

import 'package:permission_handler/permission_handler.dart';

Future<void> requestPermissions() async {
  if (await Permission.location.isDenied) {
    await Permission.location.request();
  }
}
回到顶部