main.dart 5.5 KB
Newer Older
houziyu's avatar
houziyu committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
import 'package:amap_flutter_map_example/pages/overlays/marker_add_after_map.dart';
import 'package:amap_flutter_map_example/pages/overlays/marker_add_with_map.dart';
import 'package:amap_flutter_map_example/pages/overlays/marker_config.dart';
import 'package:amap_flutter_map_example/pages/overlays/marker_custom_icon.dart';
import 'package:amap_flutter_map_example/pages/overlays/place_polygon.dart';
import 'package:amap_flutter_map_example/pages/overlays/place_polyline.dart';
import 'package:amap_flutter_map_example/pages/interactive/map_gestures_options.dart';
import 'package:amap_flutter_map_example/pages/interactive/map_ui_options.dart';
import 'package:amap_flutter_map_example/pages/interactive/move_camera_demo.dart';
import 'package:amap_flutter_map_example/pages/interactive/poi_click_demo.dart';
import 'package:amap_flutter_map_example/pages/interactive/snapshot_demo.dart';
import 'package:amap_flutter_map_example/pages/map/change_map_type.dart';
import 'package:amap_flutter_map_example/pages/map/custom_map_style.dart';
import 'package:amap_flutter_map_example/pages/map/limit_map_bounds.dart';
import 'package:amap_flutter_map_example/pages/map/map_all_config.dart';
import 'package:amap_flutter_map_example/pages/map/map_my_location.dart';
import 'package:amap_flutter_map_example/pages/map/min_max_zoom.dart';
import 'package:amap_flutter_map_example/pages/map/multi_map.dart';
import 'package:amap_flutter_map_example/pages/map/show_map_page.dart';
import 'package:amap_flutter_map_example/pages/overlays/polyline_geodesic.dart';
import 'package:amap_flutter_map_example/pages/overlays/polyline_texture.dart';
import 'package:amap_flutter_map_example/widgets/demo_group.dart';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';

import 'base_page.dart';

final List<BasePage> _mapDemoPages = <BasePage>[
  AllMapConfigDemoPage('总体演示', '演示AMapWidget的所有配置项'),
  ShowMapPage('显示地图', '基本地图显示'),
  LimitMapBoundsPage('限制地图显示范围', '演示限定手机屏幕显示地图的范围'),
  MinMaxZoomDemoPage('指定显示级别范围', '演示指定最小最大级别功能'),
  ChangeMapTypePage('切换地图图层', '演示内置的地图图层'),
  CustomMapStylePage('自定义地图', '根据自定义的地图样式文件显示地图'),
  MultiMapDemoPage('地图多实例', '同时显示多个地图'),
];

final List<BasePage> _interactiveDemoPages = <BasePage>[
  MapUIDemoPage('UI控制', 'ui开关演示'),
  GesturesDemoPage('手势交互', '手势交互'),
  PoiClickDemoPage('点击poi功能', '演示点击poi之后的回调和信息透出'),
  MoveCameraDemoPage('改变地图视角', '演示改变地图的中心点、可视区域、缩放级别等功能'),
  SnapshotPage('地图截屏', '地图截屏示例'),
  MyLocationPage('显示我的位置', '在地图上显示我的位置'),
];

final List<BasePage> _markerPages = <BasePage>[
  MarkerConfigDemoPage('Marker操作', '演示Marker的相关属性的操作'),
  MarkerAddWithMapPage("随地图添加", "演示初始化地图时直接添加marker"),
  MarkerAddAfterMapPage("单独添加", "演示地图初始化之后单独添加marker功能"),
  MarkerCustomIconPage('自定义图标', '演示marker使用自定义图标功能'),
];

final List<BasePage> _overlayPages = <BasePage>[
  PolylineDemoPage('Polyline操作', '演示Polyline的相关属性的操作'),
  PolylineGeodesicDemoPage('Polyline大地曲线', '演示大地曲线的添加'),
  PolylineTextureDemoPage('Polyline纹理线', '演示纹理线的添加'),
  PolygonDemoPage('Polygon操作', '演示Polygon的相关属性的操作'),
];

final List<Permission> needPermissionList = [
  Permission.location,
  Permission.storage,
  Permission.phone,
];

class AMapDemo extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return DemoWidget();
  }
}

class DemoWidget extends State<AMapDemo> {
  @override
  void initState() {
    super.initState();
    _checkPermissions();
  }

  @override
  void reassemble() {
    super.reassemble();
    _checkPermissions();
  }

  void _checkPermissions() async {
    Map<Permission, PermissionStatus> statuses =
        await needPermissionList.request();
    statuses.forEach((key, value) {
      print('$key premissionStatus is $value');
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('高德地图示例')),
      body: Container(
        height: MediaQuery.of(context).size.height,
        width: MediaQuery.of(context).size.width,
        child: SingleChildScrollView(
          child: Container(
            child: Column(
              children: [
                DemoGroupWidget(
                  groupLabel: '创建地图',
                  itemPages: _mapDemoPages,
                ),
                DemoGroupWidget(
                  groupLabel: '地图交互',
                  itemPages: _interactiveDemoPages,
                ),
                DemoGroupWidget(
                  groupLabel: '绘制点标记',
                  itemPages: _markerPages,
                ),
                DemoGroupWidget(
                  groupLabel: '绘制线和面',
                  itemPages: _overlayPages,
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

void main() {
  // debugProfileBuildsEnabled = true;
  // debugProfilePaintsEnabled = true;
  // debugPaintLayerBordersEnabled = true;
  runApp(MaterialApp(home: AMapDemo()));
}