navigine_sdk 1.2.1+5 copy "navigine_sdk: ^1.2.1+5" to clipboard
navigine_sdk: ^1.2.1+5 copied to clipboard

outdated

A new flutter plugin project.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:navigine_sdk/navigine_sdk.dart';
import 'dart:async';

import 'package:navigine_sdk_example/image_view.dart';

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: HomeScreen(),
      ),
    );
  }
}

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

class _HomeScreenState extends State<HomeScreen> {
  NavigineSDK? navigine;
  NavigationThread? thread;

  double progress = 0.0;

  @override
  void initState() {
    super.initState();
    initPlatformState();
  }

  Future<void> initPlatformState() async {
    navigine = await NavigineSDK.initializeSDK(
      userHash: "8367-95A0-958E-F488",
    );
    loadLocation();
  }

  loadLocation() async {
    await navigine?.loadLocation(
      locationId: 95190,
      onSuccess: () {
        print('Success');
        // This is a test.
        startNavigation();
      },
      onFailed: (code) {
        print("Failed $code");
      },
      onUpdate: (state) {
        setState(() {
          progress = state / 100;
        });
      },
    );
  }

  DeviceInfo? deviceInfo;
  startNavigation() async {
    Location location = await navigine!.getLocation();
    setState(() {
      subLocation = location.subLocations[0];
    });
  }

  _startNavigation() async {
    thread = await NavigationThread.startNavigation();
    setState(() {});
    stream = thread!.getDeviceInfoListener().listen((d) {
      setState(() {
        deviceInfo = d;
        deviceInfo?.paths.forEach((element) {
          print(element.points);
        });
      });
    });
  }

  StreamSubscription<DeviceInfo>? stream;
  Location? l;
  SubLocation? subLocation;
  @override
  void dispose() {
    stream?.cancel();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Stack(
          children: <Widget>[
            if (subLocation != null)
              SubLocationWidget(
                subLocation: subLocation!,
                deviceInfo: deviceInfo,
                onVenueTapped: (v) {
                  print(v.name);
                },
              ),
            Column(
              children: [
                FlatButton(
                  child: Text("Get Location"),
                  onPressed: () async {
                    Location l = await navigine!.getLocation();
                    showDialog(
                      context: context,
                      builder: (_) => SimpleDialog(
                        children: l.subLocations
                            .map(
                              (e) => ListTile(
                                title: Text(e.name),
                                onTap: () {
                                  setState(() {
                                    subLocation = e;
                                  });
                                  Navigator.pop(context);
                                },
                              ),
                            )
                            .toList(),
                      ),
                    );
                  },
                ),
                FlatButton(
                  child: Text("Start Locating"),
                  onPressed: () {
                    _startNavigation();
                  },
                ),
                FlatButton(
                  child: Text("Stop Locating"),
                  onPressed: () {
                    stream?.cancel();
                    stream = null;
                  },
                ),
                FlatButton(
                  child: Text("Get Route"),
                  onPressed: () {},
                ),
                FlatButton(
                  child: Text("Add Target"),
                  onPressed: () {
                    print(subLocation!.width);
                    print(subLocation!.height);
                    thread?.addTarget(LocationPoint.fromData(
                      subLocation!.location,
                      subLocation!.id,
                      300,
                      300,
                    ));
                  },
                ),
              ],
            )
          ],
        ),
      ),
    );
  }
}
3
likes
0
pub points
31%
popularity

Publisher

verified publisheraawaz.dev

A new flutter plugin project.

Homepage

License

unknown (LICENSE)

Dependencies

collection, flutter, meta

More

Packages that depend on navigine_sdk