Flutter室内导航插件flutter_ai_indoor_navigation的使用

Flutter室内导航插件flutter_ai_indoor_navigation的使用

本插件是一个为Combain室内AI导航SDK编写的包装器。它提供了将SDK集成到你的Flutter应用中的简单方法。

开始使用

这是开始从Combain室内AI导航SDK接收室内位置更新所需的所有代码:

Future<void> initIndoorNavigationSDK() async {
  // 配置插件
  var config = FlutterIndoorNavigationSDKConfig(
      apiKey: Secrets.apiKey, // 你的API密钥
      syncingInterval: SyncingInterval(interval: 0), // 同步间隔
      routingConfig: FlutterRoutingConfig(
          routableNodesOptions:
              FlutterRoutableNodesOptions.allExceptDefaultName)); // 路由配置选项

  // 创建并启动SDK实例
  val aiIndoorNavigationSDK = await FlutterIndoorNavigationSDK.create(config);
  await aiIndoorNavigationSDK.start();
}

示例代码

以下是一个完整的示例项目,展示了如何使用此插件。

示例项目文件结构

example/
├── lib/
│   ├── main.dart

main.dart 文件内容

import 'package:flutter/material.dart';

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

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

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

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState(); // 初始化平台状态
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'), // 应用标题
        ),
        body: const Center(), // 中心内容
      ),
    );
  }

  void initPlatformState() {
    // 在这里调用初始化SDK的方法
    initIndoorNavigationSDK();
  }
}

更多关于Flutter室内导航插件flutter_ai_indoor_navigation的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter室内导航插件flutter_ai_indoor_navigation的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_ai_indoor_navigation 是一个用于在 Flutter 应用中实现室内导航的插件。该插件可以帮助开发者在室内环境中进行路径规划和导航,通常应用于商场、机场、医院等大型建筑的室内导航场景。

安装插件

首先,你需要在 pubspec.yaml 文件中添加 flutter_ai_indoor_navigation 插件:

dependencies:
  flutter:
    sdk: flutter
  flutter_ai_indoor_navigation: ^版本号

然后运行 flutter pub get 来安装插件。

基本用法

1. 初始化

在使用插件之前,通常需要进行初始化操作。初始化时可能需要设置一些参数,比如地图数据、API密钥等。

import 'package:flutter_ai_indoor_navigation/flutter_ai_indoor_navigation.dart';

void initializeIndoorNavigation() async {
  await FlutterAIIndoorNavigation.initialize(
    apiKey: 'your_api_key',
    mapData: 'path_to_map_data',
  );
}

2. 路径规划

使用 calculateRoute 方法来计算从起点到终点的路径。你需要提供起点和终点的坐标。

void calculateRoute() async {
  final startPoint = IndoorPoint(x: 10, y: 20, floor: 1);
  final endPoint = IndoorPoint(x: 30, y: 40, floor: 2);

  final route = await FlutterAIIndoorNavigation.calculateRoute(
    startPoint: startPoint,
    endPoint: endPoint,
  );

  if (route != null) {
    print('Route calculated: ${route.points}');
  } else {
    print('Failed to calculate route');
  }
}

3. 导航

使用 startNavigation 方法来开始导航。你需要提供计算好的路径。

void startNavigation(IndoorRoute route) async {
  await FlutterAIIndoorNavigation.startNavigation(route: route);
}

4. 停止导航

导航结束后,可以使用 stopNavigation 方法来停止导航。

void stopNavigation() async {
  await FlutterAIIndoorNavigation.stopNavigation();
}

5. 监听导航状态

你可以监听导航状态来获取实时的导航信息。

void listenToNavigation() {
  FlutterAIIndoorNavigation.onNavigationUpdate.listen((event) {
    print('Current position: ${event.currentPosition}');
    print('Next turn: ${event.nextTurn}');
  });
}

示例代码

以下是一个简单的示例,展示了如何使用 flutter_ai_indoor_navigation 插件进行室内导航。

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await initializeIndoorNavigation();
  runApp(MyApp());
}

void initializeIndoorNavigation() async {
  await FlutterAIIndoorNavigation.initialize(
    apiKey: 'your_api_key',
    mapData: 'path_to_map_data',
  );
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Indoor Navigation Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              final startPoint = IndoorPoint(x: 10, y: 20, floor: 1);
              final endPoint = IndoorPoint(x: 30, y: 40, floor: 2);

              final route = await FlutterAIIndoorNavigation.calculateRoute(
                startPoint: startPoint,
                endPoint: endPoint,
              );

              if (route != null) {
                await FlutterAIIndoorNavigation.startNavigation(route: route);
                listenToNavigation();
              } else {
                print('Failed to calculate route');
              }
            },
            child: Text('Start Navigation'),
          ),
        ),
      ),
    );
  }

  void listenToNavigation() {
    FlutterAIIndoorNavigation.onNavigationUpdate.listen((event) {
      print('Current position: ${event.currentPosition}');
      print('Next turn: ${event.nextTurn}');
    });
  }
}
回到顶部