mapmyindia_direction_plugin 0.2.0 copy "mapmyindia_direction_plugin: ^0.2.0" to clipboard
mapmyindia_direction_plugin: ^0.2.0 copied to clipboard

A new Flutter plugin.

example/lib/main.dart

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:mapmyindia_direction_plugin_example/DirectionSettings.dart';
import 'package:mapmyindia_direction_plugin_example/settingWidget.dart';

import 'package:mapmyindia_gl/mapmyindia_gl.dart';
import 'package:mapmyindia_direction_plugin/mapmyindia_direction_plugin.dart';

void main() {
  runApp(MaterialApp(
    home: MyApp(),
    routes: <String, WidgetBuilder>{
      'SettingWidget': (BuildContext context) => SettingWidget(),
    },
  ));
}

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

class _MyAppState extends State<MyApp> {
  static const String MAP_SDK_KEY = "";
  static const String REST_API_KEY = "";
  static const String ATLAS_CLIENT_ID = "";
  static const String ATLAS_CLIENT_SECRET = "";

  DirectionCallback _directionCallback = DirectionCallback(null, null);

  @override
  void initState() {
    super.initState();
    MapmyIndiaAccountManager.setMapSDKKey(MAP_SDK_KEY);
    MapmyIndiaAccountManager.setRestAPIKey(REST_API_KEY);
    MapmyIndiaAccountManager.setAtlasClientId(ATLAS_CLIENT_ID);
    MapmyIndiaAccountManager.setAtlasClientSecret(ATLAS_CLIENT_SECRET);
  }

  Future<void> openMapmyIndiaDirectionWidget() async {
    DirectionCallback directionCallback;
    DirectionSettings settings = DirectionSettings();
    PlaceOptions placeOptions= PlaceOptions(
        tokenizeAddress: settings.tokenizeAddress,
        saveHistory: settings.saveHistory,
       historyCount: settings.historyCount!=null?int.parse(settings.historyCount!):null,
      backgroundColor: settings.backgroundColor,
      toolbarColor: settings.toolbarColor,
      toolbarTintColor: settings.toolbarTintColor,
      zoom: settings.zoom!=null?double.parse(settings.zoom!):null,
      //pod:
      location: settings.longitude!=null&&settings.latitude!=null?LatLng(double.parse(settings.latitude!),double.parse(settings.longitude!)):null,
      filter: settings.filter!=null?settings.filter:null

    );

    DirectionOptions options = DirectionOptions(
      showStartNavigation: settings.showStartNavigation,
      showAlternative: settings.showAlternative,
      steps: settings.showSteps,
      resource: settings.resource,
      profile: settings.profile,
      overview: settings.overView,
      excludes:settings.excludes.length == 0 ?null:settings.excludes,
      searchPlaceOption: placeOptions,
      destination:
      settings.eloc != null
          ?
      DirectionPoint(settings.placeName!, settings.placeAddress!,eLoc: settings.eloc):
      settings.dLng != null&&settings.dLat!=null?
      DirectionPoint(settings.placeName!, settings.placeAddress!,location: LatLng(double.parse(settings.dLat!),double.parse(settings.dLng!
      ))):null
    );
    // Platform messages may fail, so we use a try/catch PlatformException.
    try {
      directionCallback = await openDirectionWidget(directionOptions:options );
    } on PlatformException {
      directionCallback = DirectionCallback(null, null);
    }
    print(json.encode(directionCallback.directionResponse?.toMap()));

    // If the widget was removed from the tree while the asynchronous platform
    // message was in flight, we want to discard the reply rather than calling
    // setState to update our non-existent appearance.
    if (!mounted) return;

    setState(() {
      _directionCallback = directionCallback;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Direction Example'),
          actions: <Widget>[
            IconButton(
              icon: Icon(
                Icons.settings,
                color: Colors.white,
              ),
              onPressed: () {
                Navigator.pushNamed(context, 'SettingWidget');
              },
            )
          ],
        ),
        body: Center(
            child: Column(children: [
              SizedBox(
                height: 20,
              ),
              Text(_directionCallback.selectedIndex == null
                ? 'Selected Index: '
                : 'Selected Index: ${_directionCallback.selectedIndex}'),
              SizedBox(
                height: 20,
              ),
              Text(_directionCallback.directionResponse?.waypoints == null
                ? 'Distance: '
                : 'Distance: ${_directionCallback.directionResponse?.routes?[0].distance}'),
              SizedBox(
                height: 20,
              ),
              Text(_directionCallback.directionResponse?.waypoints == null
                ? 'Duration: '
                : 'Duration: ${_directionCallback.directionResponse?.routes?[0].duration}'),
              SizedBox(
                height: 20,
              ),
               TextButton(
                child: Text('Open Direction Widget'),
                onPressed: () => {openMapmyIndiaDirectionWidget()})
            ])
        ),
      ),
    );
  }
}