# ArcGIS Maps SDK for Flutter

Use [ArcGIS Maps SDK for Flutter](https://developers.arcgis.com/flutter/) to build native mobile apps that incorporate capabilities such as location, 2D and 3D data visualization, geocoding, and routing, for deployment to iOS or Android platforms.

For a full list of capabilities, check out our [key features guide](https://developers.arcgis.com/flutter/key-features/).

# Platform support

* Use a macOS development host to deploy to iOS & Android mobile devices.
* Use a Windows development host to deploy to Android mobile devices.

For more information, view our detailed [System requirements](https://developers.arcgis.com/flutter/system-requirements/).

# Get started

Once you have added arcgis_maps to your app as a dependency, you need to configure `arcgis_maps_core`.

First, update to the latest compatible versions of all the dependencies by running:

`flutter pub upgrade`

Then run the following command to download and install `arcgis_maps_core`:

`dart run arcgis_maps install`

Note on Windows: this step requires permission to create symlinks. Either run this step in an elevated "Administrator" command prompt, or go to "Settings > Update & Security > For developers" and turn on "Developer Mode".

Then add "arcgis_maps_core" to your `.gitignore` file.

```
# Miscellaneous
arcgis_maps_core
...
```

For additional information, see our [Install and set up guide](https://developers.arcgis.com/flutter/install-and-set-up/).

If you are new to Flutter development or ArcGIS, check out our detailed [Get started guide](https://developers.arcgis.com/flutter/get-started/).

## Platform specific configuration

For additional platform specific configuration and permissions, see our [Install and set up guide](https://developers.arcgis.com/flutter/install-and-set-up/).

# Using the API

Add an `ArcGISMapView` Widget to the widget tree, assign an `ArcGISMapViewController` and apply an `ArcGISMap`.

```dart
import 'package:arcgis_maps/arcgis_maps.dart';
...
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: ArcGISMapView(
        controllerProvider: () => ArcGISMapView.createController()
          ..arcGISMap = ArcGISMap.withBasemapStyle(BasemapStyle.arcGISImagery),
      ),
    );
  }
...
```

For information and a list of available classes, see our [API Reference](https://links.esri.com/flutter-api-ref).
We also have [Sample code](https://github.com/Esri/arcgis-maps-sdk-flutter-samples) demonstrating the capabilities of ArcGIS Maps SDK for Flutter and how to use them in your own app, as well as [tutorials](https://developers.arcgis.com/flutter/tutorials/) providing step-by-step instructions to build apps that incorporate ArcGIS Maps functionality.

# Additional resources
* New to ArcGIS? Explore our documentation: [Guide](https://developers.arcgis.com/flutter) | [API Reference](https://links.esri.com/flutter-api-ref)
* New to Flutter? See our [Get started guide](https://developers.arcgis.com/flutter/get-started/).
* [Sample code](https://github.com/Esri/arcgis-maps-sdk-flutter-samples): sample code demonstrating the capabilities of ArcGIS Maps SDK for Flutter and how to use them in your own app.
* [Tutorials](https://developers.arcgis.com/flutter/tutorials/): step-by-step instructions to build apps that incorporate ArcGIS Maps functionality.
* [Key Features](https://developers.arcgis.com/flutter/key-features/)
* [Toolkit](https://links.esri.com/flutter-toolkit): ready-made widgets to simplify the development of mapping and GIS apps with Flutter.
* Got a question? Ask the community on our [forum](https://links.esri.com/flutter-community).
