Flutter地图展示插件default_map的使用

Flutter 地图展示插件 default_map 的使用

功能特性

DefaultMap 是一个你可以像 Python 的 collections.defaultdict 一样使用的映射。它允许你指定默认值,且永远不会返回 null

使用方法

简单实例化 DefaultMap

// 创建一个默认值为空字符串的 DefaultMap
final DefaultMap<int, String> m = DefaultMap<int, String>();
m[1] = 'one';
print(m[1]); // 输出: 'one'
print(m[2]); // 输出: ''

指定默认值函数

你可能需要给 DefaultMap 提供一个参数 ifAbsent,该参数是一个定义默认值的函数。例如,这里我们传入了一个空的 HashMap<int, int> 函数,这意味着当键不存在时,会返回一个空的 HashMap<int, int>

// 创建一个默认值为 HashMap<int, int> 的 DefaultMap
final DefaultMap<int, HashMap<int, int>> m = DefaultMap<int, HashMap<int, int>>(() => HashMap<int, int>());
m[1][1] = 1;
print(m[1]); // 输出: {1: 1}
print(m[2]); // 输出: {} 

额外信息

如果你的 DefaultMap<K, V> 中的 V 类型属于以下列表,那么你无需指定默认值(即无需传递 ifAbsent 参数)。

V 默认值
int 0
double 0.0
String ''
bool false
List<int> []
List<double> []
List<String> []
List<bool> []
Map<int, int> {}
Map<int, double> {}
Map<int, String> {}
Map<int, bool> {}
Map<String, int> {}
Map<String, double> {}
Map<String, String> {}
Map<String, bool> {}

完整示例代码

以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 default_map 插件。

import 'dart:collection';

import 'package:flutter/material.dart';
import 'package:default_map/default_map.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('DefaultMap 示例'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              DefaultMapExample(),
            ],
          ),
        ),
      ),
    );
  }
}

class DefaultMapExample extends StatefulWidget {
  [@override](/user/override)
  _DefaultMapExampleState createState() => _DefaultMapExampleState();
}

class _DefaultMapExampleState extends State<DefaultMapExample> {
  final DefaultMap<int, int> m1 = DefaultMap<int, int>();
  final DefaultMap<int, HashMap<int, int>> m2 = DefaultMap<int, HashMap<int, int>>(() => HashMap<int, int>());
  final DefaultMap<int, List<int>> m3 = DefaultMap<int, List<int>>();

  [@override](/user/override)
  void initState() {
    super.initState();
    m1[0] = 1;

    m2[0][0] = 0;
    m2[1][100] = 100;

    m3[0].add(1);
    m3[1].add(2);
    m3[1].add(1);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Container(
      padding: EdgeInsets.all(16.0),
      child: Column(
        children: [
          Text('m1[0]: ${m1[0]}'), // 输出: m1[0]: 1
          Text('m2[0]: ${m2[0]}'), // 输出: m2[0]: {0: 0}
          Text('m2[1]: ${m2[1]}'), // 输出: m2[1]: {100: 100}
          Text('m3[0]: ${m3[0]}'), // 输出: m3[0]: [1]
          Text('m3[1]: ${m3[1]}'), // 输出: m3[1]: [2, 1]
        ],
      ),
    );
  }
}

更多关于Flutter地图展示插件default_map的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter地图展示插件default_map的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


Flutter 中使用 google_maps_flutter 插件可以轻松地展示 Google 地图。google_maps_flutter 是官方提供的插件,支持在 Flutter 中集成 Google 地图功能。以下是使用 google_maps_flutter 插件展示地图的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 google_maps_flutter 依赖:

dependencies:
  flutter:
    sdk: flutter
  google_maps_flutter: ^2.1.10

然后运行 flutter pub get 安装依赖。

2. 配置 Android 和 iOS 平台

Android

android/app/src/main/AndroidManifest.xml 文件中添加以下内容:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.your_app_name">

    <application
        android:label="Your App Name"
        android:icon="@mipmap/ic_launcher">

        <!-- Add your Google Maps API key here -->
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="YOUR_GOOGLE_MAPS_API_KEY"/>

        <activity
            android:name=".MainActivity"
            android:theme="@style/LaunchTheme">
            <!-- Other configurations -->
        </activity>
    </application>
</manifest>

iOS

ios/Runner/AppDelegate.swift 文件中添加以下内容:

import UIKit
import Flutter
import GoogleMaps

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    GMSServices.provideAPIKey("YOUR_GOOGLE_MAPS_API_KEY")
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}

3. 在 Flutter 中展示地图

在 Flutter 代码中,你可以使用 GoogleMap widget 来展示地图。以下是一个简单的示例:

import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';

class MapScreen extends StatefulWidget {
  [@override](/user/override)
  _MapScreenState createState() => _MapScreenState();
}

class _MapScreenState extends State<MapScreen> {
  GoogleMapController? mapController;

  final LatLng _center = const LatLng(37.7749, -122.4194); // San Francisco

  void _onMapCreated(GoogleMapController controller) {
    mapController = controller;
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Google Maps Example'),
      ),
      body: GoogleMap(
        onMapCreated: _onMapCreated,
        initialCameraPosition: CameraPosition(
          target: _center,
          zoom: 11.0,
        ),
      ),
    );
  }
}

void main() => runApp(MaterialApp(
  home: MapScreen(),
));
回到顶部