navigine_sdk 1.2.0 copy "navigine_sdk: ^1.2.0" to clipboard
navigine_sdk: ^1.2.0 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 {
    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: thread != null
                      ? () async {
                          Location l = await thread!.getLocation();
                          showDialog(
                            context: context,
                            builder: (_) => SimpleDialog(
                              children: l.subLocations
                                  .map(
                                    (e) => ListTile(
                                      title: Text(e.name),
                                      onTap: () {
                                        setState(() {
                                          subLocation = e;
                                        });
                                        Navigator.pop(context);
                                      },
                                    ),
                                  )
                                  .toList(),
                            ),
                          );
                        }
                      : null,
                ),
                FlatButton(
                  child: Text("Stop Location"),
                  onPressed: () {
                    stream?.cancel();
                  },
                ),
                FlatButton(
                  child: Text("Get Route"),
                  onPressed: () {
                    stream?.cancel();
                  },
                ),
                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
points
27
downloads

Publisher

verified publishernavigine.com

Weekly Downloads

A new flutter plugin project.

Homepage

License

unknown (license)

Dependencies

collection, flutter, meta

More

Packages that depend on navigine_sdk

Packages that implement navigine_sdk