Flutter Map开发报错:layers参数及TileLayerOptions等方法未定义
Flutter Map 报错修复方案
报错原因及修复方法
- 命名参数'layers'未定义:flutter_map 新版本将
layers参数从FlutterMap组件的直接参数,移至MapOptions的layers属性中,需调整参数位置。 - 未定义'TileLayerOptions'和'MarkerLayerOptions':库版本更新后,这类带
Options后缀的配置类已重构为直接的Widget,分别替换为TileLayer和MarkerLayer。
修正后的完整代码
import 'package:flutter/material.dart'; import 'package:flutter_map/flutter_map.dart'; import 'package:latlong2/latlong.dart'; import 'dart:math'; class HotSpot extends StatefulWidget { @override _HotSpotState createState() => _HotSpotState(); } class _HotSpotState extends State<HotSpot> { List<User> users = []; MapController mapController = MapController(); Random random = Random(); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('HotSpot'), ), body: FlutterMap( options: MapOptions( center: const LatLng(0, 0), zoom: 5.0, // 将layers移至MapOptions内部 layers: [ TileLayer( urlTemplate: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', subdomains: const ['a', 'b', 'c'], ), MarkerLayer( markers: users .map((user) => Marker( point: LatLng(user.latitude, user.longitude), builder: (context) => const Icon( Icons.location_on, color: Colors.red, ), )) .toList(), ), ], ), mapController: mapController, ), floatingActionButton: FloatingActionButton( onPressed: () { // 添加随机用户位置到地图 double latitude = random.nextDouble() * 180 - 90; double longitude = random.nextDouble() * 360 - 180; User user = User(latitude, longitude); setState(() { users.add(user); }); }, child: const Icon(Icons.add), ), ); } } class User { double latitude; double longitude; User(this.latitude, this.longitude); }
内容的提问来源于stack exchange,提问作者Donovan
相关产品推荐
相关产品推荐

