This project is the HERE SDK reference application for Flutter

Overview

HERE SDK Reference Application for Flutter

The reference application for the HERE SDK for Flutter (Navigate Edition) shows how a complex and release-ready project targeting iOS and Android devices may look like. You can use it as a source of inspiration for your own HERE SDK based projects - in parts or as a whole.

Overview

With this blueprint reference application you can see how UX flows can be built for the HERE SDK - covering the main use cases from searching for POIs, planning and picking a route and finally starting the trip to your destination.

  • Learn how the HERE SDK 4.x can be complemented with rich UI for your own application development.
  • Discover how to avoid common pitfalls, master edge cases and benefit from optimized end user flows.
  • All code using the HERE SDK is implemented in pure Dart following well-established clean code standards.
  • On top, the reference application is enriched with tailored graphical assets - adapted for various screen sizes and ready to be used in your own projects.

If you are looking for smaller bits & pieces or just want to get started with the integration of the HERE SDK into a simpler project, you may want to start looking into our example apps selection including a stripped down hello_map_app that accompanies the Developer's Guide for the HERE SDK.

The reference application hosted in this repo focuses on how specific features can be implemented and used within the context of a full blown Flutter application - not only to show the usage of our APIs and the HERE SDK functionality as clear and understandable as possible, but also to show how complex Flutter projects in general can be organized and developed with production quality.

Supported features (so far):

  • Search: Including suggestions, text search and search along a route corridor.
  • Routing: As of now, the reference application supports the following transport modes: car, truck, scooter and pedestrian.
  • Turn-By-Turn Navigation: Including maneuver instructions with visual feedback and voice guidance.

screenshots

Get Started

The reference application for the HERE SDK for Flutter (Navigate Edition) requires the following prerequisites:

On top you need an IDE of your choice. This could be a text editor or IDEs such as Visual Studio Code with the Flutter extension or Android Studio. We use Android Studio 4.1.3 for development.

Note: If you want to compile, build & run for iOS devices, you also need to have Xcode and CocoaPods (version 1.10.0 or higher) installed. We use Xcode 12.4 for development. If you only target Android devices, Xcode is not required.

Add the HERE SDK Plugin

Make sure you have cloned this repository and you have downloaded the HERE SDK for Flutter (Navigate Edition), see above.

  1. Unzip the downloaded HERE SDK for Flutter package. This folder contains various files including various documentation assets.
  2. Inside the unzipped package you will find a TAR file that contains the HERE SDK plugin.
  3. Unzip the TAR file and rename the folder to 'here_sdk'. Move it inside the plugins folder.

Build the Reference Application

  1. Set your HERE SDK credentials: The reference application does not require hardcoded credentials for the AndroidManifest or Plist file. Instead the credentials are read from your local environment. Therefore, you need to add two system environment variables, HERESDK_ACCESS_KEY_ID and HERESDK_ACCESS_KEY_SECRET. For example, from a MacOS terminal execute:

    • export HERESDK_ACCESS_KEY_ID="YOUR_ACCESS_KEY_ID"
    • export HERESDK_ACCESS_KEY_SECRET="YOUR_ACCESS_KEY_SECRET"

    You may need to restart the terminal application to take effect.

    Note that for iOS builds an extra step is needed: Execute the bash script setup_ios_here_sdk_keys.sh with setup_ios_here_sdk_keys.sh from within the iOS folder of this repository. As a result, a new file should be created under ios/Flutter/GeneratedKeys.xcconfig which will contain your credentials.

  2. Go to the repository root folder which contains the pubspec.yaml and run the terminal command flutter pub get to fetch the required dependencies.

  3. Open the project in your IDE of choice and execute the Flutter project for your target platform.

How to build Flutter apps for Android and iOS

If you are new to Flutter, here are more detailed steps for you. You may also want to consult the official Flutter site in general and the Flutter SDK documentation in particular first.

  • Build for Android:
    • Build an Android APK by executing flutter build apk or use the command flutter run to build and run on an attached device.
  • Build for iOS:
    • Run pod install in the ios folder.
    • Then go back to the repository root folder and type flutter build ios to build a Runner.app. Type flutter run to build and run on an attached device.
    • You can open the /repository root/ios/Runner.xcworkspace project in Xcode and execute and debug from there.
    • Note: You need to have valid development certificates available to sign the app for device deployment.

Contributing

You can contribute to this open source project and improve it for others. There are many ways to contribute to this project, whether you want to create an issue, submit bug reports or improve the documentation - we are happy to see your merge requests. Have a look at our contribution guide and code of conduct. Happy coding!

Questions and Support

We provide the code 'AS IS'. Using the source code does not come with any additional grant of customer support or promise of specific feature development on our part. If you have any questions, please contact us or check the tag here-api on stackoverflow.com.

License

Copyright (C) 2020-2021 HERE Europe B.V.

See the LICENSE file in the root folder of this project for license details.

For other use cases not listed in the license terms, please contact us.

Note

This application and the HERE SDK itself include open source components which require explicit attribution. Please remember to add open source notices in your project. Furthermore, we ask you not to re-sell the icons included in this project.

Comments
  • SDK 4 - only one listener for Navigator

    SDK 4 - only one listener for Navigator

    Excuse me, but the other way is to write to your support team, which seems to be pointless. Why did you allow only one listener of each type for Navigator? I suppose it is the same as NavigationManager, which in the previous version could be a singleton, and also could have multiple listeners of each type. Of course, I can have some aggregating listener, for each type, but ... And what with, for example, map gesture listeners?

    I would even notice that in the early android ages they also had one listener with set, and sometime later they changed to add approach.

    opened by Azbesciak 11
  • Here Map is not in the backward of all stack widget.

    Here Map is not in the backward of all stack widget.

    Hello everyone, so I face the problem is that the here map is on the front of all stack widgets and it covers all of the stack widgets even bottomNavigationBar and appbar or else. I have tried to use the here map in another project and it worked before. but now it does not work for any project anyway. What should I do?

    This is my flutter doctor. [✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0) • Android SDK at /Users/pnall02/Library/Android/sdk • Platform android-31, build-tools 31.0.0 • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189) • All Android licenses accepted.

    [!] Xcode - develop for iOS and macOS (Xcode 13.3.1) • Xcode at /Applications/Xcode.app/Contents/Developer ✗ CocoaPods not installed. CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side. Without CocoaPods, plugins will not work on iOS or macOS. For more info, see https://flutter.dev/platform-plugins To install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.

    [✓] Chrome - develop for the web • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

    [✓] Android Studio (version 2020.3) • Android Studio at /Applications/Android Studio.app/Contents • Flutter plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/6351-dart • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)

    [✓] VS Code (version 1.68.0) • VS Code at /Applications/Visual Studio Code.app/Contents • Flutter extension can be installed from: 🔨 https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

    [✓] Connected device (3 available) • SM A105G (mobile) • R58M78MSNQJ • android-arm • Android 9 (API 28) • macOS (desktop) • macos • darwin-arm64 • macOS 12.3 21E230 darwin-arm • Chrome (web) • chrome • web-javascript • Google Chrome 103.0.5060.53

    [✓] HTTP Host Availability • All required HTTP hosts are available

    ! Doctor found issues in 1 category. Process finished with exit code 0

    opened by izzabellerina 7
  • Map pin moves while panning

    Map pin moves while panning

    I have been working through the reference app to get an understanding of how Here Maps works. One thing I have noticed is that while panning, the map pins seem to move while the marker does not move at all. Is there any way to avoid this?

    https://user-images.githubusercontent.com/7745380/197228546-f9d21fe7-b3bc-48b8-a656-d9fc0f5a31e1.mp4

    SDK Version: 4.12.3

    opened by AndyDavidJoyce 3
  • Could not resolve all files for configuration ':app:debugRuntimeClasspath'

    Could not resolve all files for configuration ':app:debugRuntimeClasspath'

    I don't know what's going on. but I've found a new problem so please anyone help me again. So thank you in advance.

    • What went wrong: Execution failed for task ':app:processDebugResources'.

    Could not resolve all files for configuration ':app:debugRuntimeClasspath'. Failed to transform heresdk-explore-4.11.4.0.9001.release-.aar (:heresdk-explore-4.11.4.0.9001.release:) to match attributes {artifactType=android-compiled-dependencies-resources, org.gradle.status=integration}. > Execution failed for AarResourcesCompilerTransform: /Users/pnall02/.gradle/caches/transforms-2/files-2.1/86f7de27af1854bcd9a87e6a1c8b91b1/jetified-heresdk-explore-4.11.4.0.9001.release. > /Users/pnall02/.gradle/caches/transforms-2/files-2.1/86f7de27af1854bcd9a87e6a1c8b91b1/jetified-heresdk-explore-4.11.4.0.9001.release/AndroidManifest.xml

    ///--------------------------------------------- Flutter Doctor ---------------------------------------------------------

    [✓] Flutter (Channel stable, 3.0.0, on macOS 12.3 21E230 darwin-arm, locale en-GB) • Flutter version 3.0.0 at /Users/pnall02/flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision ee4e09cce0 (2 months ago), 2022-05-09 16:45:18 -0700 • Engine revision d1b9a6938a • Dart version 2.17.0 • DevTools version 2.12.2

    [✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0) • Android SDK at /Users/pnall02/Library/Android/sdk • Platform android-33, build-tools 31.0.0 • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189) • All Android licenses accepted.

    [!] Xcode - develop for iOS and macOS (Xcode 13.3.1) • Xcode at /Applications/Xcode.app/Contents/Developer ✗ CocoaPods not installed. CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side. Without CocoaPods, plugins will not work on iOS or macOS. For more info, see https://flutter.dev/platform-plugins To install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.

    [✓] Chrome - develop for the web • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

    [✓] Android Studio (version 2020.3) • Android Studio at /Applications/Android Studio.app/Contents • Flutter plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/6351-dart • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)

    [✓] VS Code (version 1.68.0) • VS Code at /Applications/Visual Studio Code.app/Contents • Flutter extension can be installed from: 🔨 https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

    [✓] Connected device (3 available) • SM A105G (mobile) • R58M78MSNQJ • android-arm • Android 9 (API 28) • macOS (desktop) • macos • darwin-arm64 • macOS 12.3 21E230 darwin-arm • Chrome (web) • chrome • web-javascript • Google Chrome 103.0.5060.134

    [✓] HTTP Host Availability • All required HTTP hosts are available

    opened by izzabellerina 3
  • problem getting the correct credentials

    problem getting the correct credentials "Flutter Navigator"

    Got the app compiled and running on Android, but when I enter my Key_Id and Secret_Key generated by here-platform access manager OAuth2.0, I get "Download Metadata failed: These credentials do not authorize access".

    Routing and searching for locations are working, but no maps !

    My question is, how and where do I generate the right credentials for the flutter navigator edition ? Is the developer or the platform the right place ? By the way, I tried both.

    opened by sandmen 2
  • Cannot run on windows

    Cannot run on windows

    Hello, I am trying to compile this app on my machine. I have navigate sdk in version 4.9.4, and cloned https://github.com/heremaps/here-sdk-ref-app-flutter/commit/581fee61efa752d7f4e068ab9ac5ba034b2ab55f

    After running flutter run in the main package I receive the following error

    Because every version of here_sdk from path depends on ffi 1.0.0 and dbus >=0.5.5 depends on ffi ^1.1.2, here_sdk from path is incompatible with dbus >=0.5.5.
    (1) So, because flutter_local_notifications_linux >=0.4.0 depends on dbus ^0.6.0, here_sdk from path is incompatible with flutter_local_notifications_linux >=0.4.0.
    
        Because flutter_local_notifications >=9.2.0 <10.0.0-dev.1 depends on flutter_local_notifications_linux ^0.4.1 and no versions of flutter_local_notifications match >9.1.5 <9.2.0, flutter_local_notifications >9.1.5 <10.0.0-dev.1 requires flutter_local_notifications_linux ^0.4.1.
        And because flutter_local_notifications 9.1.5 depends on flutter_local_notifications_linux ^0.4.0, flutter_local_notifications >=9.1.5 <10.0.0-dev.1 requires flutter_local_notifications_linux ^0.4.0.
        And because here_sdk from path is incompatible with flutter_local_notifications_linux >=0.4.0 (1), here_sdk from path is incompatible with flutter_local_notifications >=9.1.5 <10.0.0-dev.1.
        So, because RefApp depends on both flutter_local_notifications ^9.1.5 and here_sdk from path, version solving failed.
    pub get failed (1;     So, because RefApp depends on both flutter_local_notifications ^9.1.5 and here_sdk from path, version solving failed.)
    

    I made every step in the readme, my OS is Windows 10. I have never used flutter before, but flutter doctor shows that everything is fine.

    Doctor summary (to see all details, run flutter doctor -v):
    [√] Flutter (Channel stable, 2.8.1, on Microsoft Windows [Version 10.0.19043.1415], locale pl-PL)
    [√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    [√] Chrome - develop for the web
    [√] Android Studio (version 2020.3)
    [√] IntelliJ IDEA Ultimate Edition (version 2021.3)
    [√] VS Code (version 1.63.2)
    [√] Connected device (3 available)
    
    • No issues found!
    

    Regards Witold

    opened by Azbesciak 2
  • Fix for app freeze on restore while navigation is in progress

    Fix for app freeze on restore while navigation is in progress

    FlutterEngine is cached and reused if MainActivity is killed (on Android). If application view is killed during navigation then background service and navigation are stopped, app also navigates to landing screen - user will see this screen if app is started again.

    opened by tstaszak89 1
  • Is this project abandoned?

    Is this project abandoned?

    ...Because it looks so. I suppose that the example app (msdkui) was supported till the end, whereas the last commit for this one is from January. Maybe you would just open source WeGo, or some components from it as a library, in the same way as the msdkui was published, or via flutter pub?

    opened by Azbesciak 1
  • Integrated HERE SDK 4.13.0.

    Integrated HERE SDK 4.13.0.

    Flutter 3.3.10 is now required. Updated external dependencies to latest compatible versions.

    Signed-off-by: Paweł Piątkowski [email protected]

    opened by ppiatkowski-here 0
  • Integrated HERE SDK 4.12.10 and Flutter 3.3.2

    Integrated HERE SDK 4.12.10 and Flutter 3.3.2

    Removed deprecations for HERE SDK 4.12.10, deprecated MapUpdater functions are still used (checkMapUpdate and performMapUpdate).

    Signed-off-by: Tadeusz Staszak [email protected]

    opened by tstaszak89 0
  • Fix for logo watermark

    Fix for logo watermark

    Keyboard no longer makes resize of layout and app will no longer draw its content behind bottom system navigation bar.

    Signed-off-by: Tadeusz Staszak [email protected]

    opened by tstaszak89 0
Releases(1.4.0)
  • 1.4.0(Sep 6, 2022)

    What's new in HERE SDK Reference Application version 1.4.0?

    • Includes the HERE SDK 4.12.0
    • Upgrade Flutter to version 2.10.5
    • Update of the dependency packages
    • Various bug fixes

    Known Issues

    Please note, this release works with Flutter version 2.10.5. Older versions of Flutter are not supported. Flutter 3.0 is not supported due to a bug in Flutter (broken native view handling in Android). We plan to upgrade to 3.3.x in the upcoming release.

    Furthermore we have an issue on Android which is worth mentioning. If the app is stopped/removed via the recent application Android screen during ongoing navigation then this results in a freeze for next application start. This freeze can only be handled if the user goes to the Apps screen in the Android settings and trigger a forced stop of the application over there. A fix is planned for HERE SDK Reference Application for Flutter version 1.5.0.

    Source code(tar.gz)
    Source code(zip)
  • 1.3.0(Jan 6, 2022)

    What's new in HERE SDK Reference Application version 1.3.0?

    • includes the HERE SDK 4.10.0
    • upgrade Flutter to version 2.8.0
    • update of the dependency packages
    • included offline functionality
    • added the ability to disable camera tracking while navigation
    • minor fixes

    Please note, this release works with Flutter version 2.8.0, but not for older Flutter versions.

    Source code(tar.gz)
    Source code(zip)
  • 1.2.0(Oct 29, 2021)

    What's new in HERE SDK Reference Application version 1.2.0?

    • includes the HERE SDK 4.9.0
    • upgrade Flutter to version 2.5.2
    • update of the dependency packages
    • integrate map loader functionality
    • minor fixes
    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Sep 15, 2021)

    What's new in HERE SDK Reference Application version 1.1.0?

    • includes the HERE SDK 4.8.0
    • support for Flutter 2.2.3
    • support for null safety
    • update of the dependency packages
    • minor fixes
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Jul 5, 2021)

    We are happy to provide you the HERE SDK Reference Application for Flutter version 1.0.0

    This version includes the following basic features:

    • basic search flow including text search and suggestions
    • basic routing flow including routing options and search along the route
    • basic navigation including the visual navigator

    Please note, this release requires the HERE SDK 4.7.0 and works with Flutter version 2.0.6 but not with newer Flutter versions yet. For more details see our readme file.

    Source code(tar.gz)
    Source code(zip)
Owner
HERE Technologies
HERE Technologies, the leading location cloud.
HERE Technologies
Body mass index (BMI) is a measure of body fat based on height and weight that applies to adult men and women. Here is the simple program for BMI calculator in Flutter.

BMI-Calculator Body mass index (BMI) is a measure of body fat based on height and weight that applies to adult men and women. Here is the simple progr

Renganathan 2 Oct 31, 2021
A simple chat app UI using flutter SDK project.

Chatty App A simple chat app UI using flutter SDK project. Screenshot Getting Started This project is a starting point for a Flutter application. A fe

Tengku Belmiro 5 Jul 15, 2022
Cross platform application for iOS and Android using Google's SDK Flutter.

scout Cross platform application for iOS and Android using Google's SDK Flutter. Launch screen for the application. The menu for selecting cookies. Cu

null 0 Nov 9, 2021
Real-world movie database mobile application with the Flutter SDK and DDD clean architecture.

Moving Pictures Moving Pictures is a mobile application built with the Flutter SDK for Android and iOS. It’s an application that gets the information

Nifemi 57 Jan 7, 2023
Task List application developed in Dart language with SDK Flutter for Android, iOS and Web

Task List application developed in Dart language with SDK (Software Development Kit) Flutter for Android, iOS and Web.

João Bruno 2 Jun 2, 2022
Stream Feed official Flutter SDK. Build your own feed experience using Dart and Flutter.

Official Flutter packages for Stream Activity Feeds The official Dart client for Stream Activity Feeds, a service for building activity feed applicati

Stream 67 Sep 26, 2022
Pensil Community official Flutter SDK. Build your own community experience using Dart and Flutter.

Official flutter package for Pensil The official Dart client for Pensil communities, a service for building communites applications. This library can

Pensil Inc 6 Oct 6, 2022
A Flutter plugin for the Google Mobile Ads SDK

A Flutter plugin for the Google Mobile Ads SDK

Google Ads 251 Jan 2, 2023
P2P payment solution using Stream's Flutter SDK and Rapyd's Wallet API

Peer-to-peer payment integration to a messaging app using Flutter ?? This project shows how to integrate a peer-to-peer payment solution to your Strea

Souvik Biswas 15 Dec 8, 2022
Official plugin for using Thepeer SDK with flutter https://thepeer.co

Flutter Thepeer This package makes it easy to use the Thepeer in a flutter project. ?? Screen Shots ?? How to Use plugin ThePeer Send Launch ThepeerSe

The Peer 23 Dec 27, 2022
Hybrid App build on flutter SDK able to run on Android, IOS, web, desktop

Codeforces Visualizer APP Ready to use Flutter Application. Uses codeforces API. Useful for codeforces programmers. ScreenShots Single User Page Compa

vikas yadav 13 Dec 31, 2022
A Flutter plugin that supports Pangle SDK on Android and iOS.

Thanks for non-commercial open source development authorization by JetBrains. 穿山甲 Flutter SDK `pangle_flutter`是一款集成了字节跳动穿山甲 Android 和 iOS SDK的 Flutter

null 121 Dec 2, 2022
Flutter SDK for Stripe.

Flutter Stripe The Stripe Flutter SDK allows you to build delightful payment experiences in your native Android and iOS apps using Flutter. We provide

null 633 Jan 7, 2023
Official Flutter SDK for Khalti Payment systems

Khalti Payment Gateway for Flutter Use Khalti Payment Gateway solution in your app or website to simplify payment for your customers. You do not need

Khalti 16 Oct 13, 2022
A Social App Built Using FLutter SDK.

Hi ?? , I'm Faheem ??‍?? A Social App Built Using FLutter SDK. The main objective of this application is to provide a single platform for the Students

Faheem Ahmad 26 Nov 10, 2022
Flutter Video Conferencing SDK & Sample App

100ms Flutter SDK ?? Here you will find everything you need to build experiences with video using 100ms iOS/Android SDK. Dive into our SDKs, quick sta

100ms 79 Dec 22, 2022
Sample app to demonstrate the integration and working of Dyte SDK for mobile, using Flutter.

Flutter Sample App by dyte Sample App to demonstrate Dyte SDK in flutter Explore the docs » View Demo · Report Bug · Request Feature Table of Contents

Dyte 12 Jan 1, 2023
A Flutter plugin for Yandex AppMetrica SDK, a marketing platform for app install attribution, app analytics, and push campaigns.

appmetrica_sdk A Flutter plugin for Yandex AppMetrica SDK. Plugin implementation status Implemented Events Profiles Not implemented yet Revenue. Comin

EM ALL iT Studio 15 Oct 21, 2021
Quickstart guide for the Agora Flutter SDK(Android/iOS)

Agora Flutter Quickstart This tutorial describes how to create an Agora account and build a sample app with Agora using Flutter. Other Languages: 简体中文

Agora.io Community 501 Dec 30, 2022