有没有办法在 aWidget上的给定位置绘制a Canvas?
更具体地说,我想在实际小部件的前面单独绘制Marker与 a 相关的's的子小部件。这是创建一个可以做到这一点的尝试,但我无法弄清楚如何在画布上实际绘制小部件。使用requires a ,我不知道如何创建/检索:FlutterMapCanvasFlutterMapCustomPainterRenderObjectPaintingContext
class MarkerPainter extends CustomPainter {
MapController mc;
BuildContext context;
List<Marker> markers;
MarkerPainter(this.context, this.mc, this.markers);
@override
void paint(Canvas canvas, Size size) {
if( markers != null && markers.isNotEmpty ){
for(int i=0; i<markers.length; i++){
Marker marker = markers[i];
Offset o = myCalculateOffsetFromLatLng(marker.point, mc, context);
// Won't work, this needs a PaintingContext...
marker.builder(context).createElement().renderObject.paint(context, o);
}
}
}
@override
bool shouldRepaint(MarkerPainter oldDelegate) => oldDelegate.markers != …Run Code Online (Sandbox Code Playgroud) flutter flutter-layout flutter-widget flutter-canvas fluttermap
我正在做一个 Flutter 项目,必须在我的项目中集成谷歌地图。为此,我在 Gogle 控制台上创建了一个新项目,添加了适用于 android 的 Maps SDK 和我需要的其他 API,并将密钥复制粘贴到我的 AndroidManisfest.xml 文件中。
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="my_key_here"
></meta-data>
Run Code Online (Sandbox Code Playgroud)
现在,当我转到我的地图屏幕时,它只向我显示左下角带有小框和 Google 图标的空白页面,以及右下角的放大和缩小图标。在控制台中,它给出了错误
这是我的 map.dart 屏幕的代码
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:location/location.dart';
import 'package:permission_handler/permission_handler.dart';
class ViewMapsScreen extends StatefulWidget {
@override
_ViewMapsScreenState createState() => _ViewMapsScreenState();
}
class _ViewMapsScreenState extends State<ViewMapsScreen> {
Completer<GoogleMapController> _controller = Completer();
static const LatLng _center = const LatLng(45.521563, -122.677433);
void _onMapCreated(GoogleMapController controller) {
_controller.complete(controller);
}
@override
Widget build(BuildContext context) {
return Scaffold( …Run Code Online (Sandbox Code Playgroud) 大家好,我正在尝试在代码中映射字符串列表,但它给了我错误“参数类型‘Iterable’不能分配给参数类型‘List’。”。我正在尝试重现下图中的结果。这是下面的代码;
**quote.dart**
class Quote {
String? text;
String? author;
Quote({ required this.text,required this.author });
}
**main.dart**
void main() {
runApp(MaterialApp(home: QuoteList()));
}
class QuoteList extends StatefulWidget {
const QuoteList({Key? key}) : super(key: key);
@override
State<QuoteList> createState() => _QuoteListState();
}
class _QuoteListState extends State<QuoteList> {
@override
List<dynamic> quotes = [
//"Quote" is the the name of the class of the second dart file.
Quote(
author: "Eminem",
text:
"You better lose yourself in music the moment you own it never let it …Run Code Online (Sandbox Code Playgroud) 我正在使用 flutter_map 将地图添加到我的项目中。我能够使用它并使用它的选项。但我想要一些在 flutter_map 中找不到的东西。
我想听位置变化并获取用户停止触摸屏幕时的最后位置。就像 GestureDetector 小部件中的 onTapUp 或 onLongPressUp 一样。
flutter_map 中有 onPositionChanged 选项,但每次位置改变时都会调用它,这是很多。一旦用户触摸屏幕,onPositionChanged 就会被调用,直到用户停止触摸屏幕。我可以从中获取最后的位置,但我想在位置发生变化时调用 API 以获取附近汽车的列表。每次调用 onPositionChanged 时都调用 API 并不好。
所以我希望能够在用户完成位置更改时(当他/她停止触摸屏幕时)调用 API。
这是我的 flutter_map 代码:
FlutterMap(
key: Key('map'),
mapController: main.mapController,
options: MapOptions(
center: LatLng(main.lat, main.long),
zoom: 14,
maxZoom: 18,
minZoom: 10,
onPositionChanged: (mapPosition, boolValue){
_lastposition = mapPosition.center;
}),
layers: [
TileLayerOptions(
errorImage: AssetImage('images/login_icon.png'),
urlTemplate:
"https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png",
// subdomains: ['a', 'b', 'c'],
// subdomains: ['', '1', '2', '3', '4']
),
MarkerLayerOptions(
markers: main.markersStart +
main.markersDestination +
main.driverMarkers,
),
], …Run Code Online (Sandbox Code Playgroud) 我的应用程序工作得很好。但是当我添加一些互联网和地图的使用权限以及谷歌地图的 api 密钥时,它给了我错误。我尝试了 flutter clean、flutter run 但仍然遇到相同的错误。我不明白我在清单文件中做错了什么。请有人帮助我。
这是我的清单文件代码:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.food_order">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<application
android:label="food_order"
android:icon="@mipmap/ic_launcher"
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<meta-data android:name="com.google.android.geo.API_KEY"
android:value="AIzaSyCn************ratM"/>
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud) 我想知道,flutter_map包中是否存在v. 0.13.1一些缩放更改事件监听器?
我尝试根据缩放大小更改笔画宽度。我该如何处理这个问题?
任务“:location:compileDebugKotlin”执行失败。
运行 Gradle 任务 'assembleDebug'... e: /Users/apple/.pub-cache/hosted/pub.dartlang.org/location-4.3.0/android/src/main/java/com/lyokone/location/FlutterLocationService .kt: (124, 1): 类 'FlutterLocationService' 不是抽象的,也没有实现抽象成员 public Abstract fun onRequestPermissionsResult(p0: Int, p1: Array<(out) String!>, p2: IntArray): Boolean 定义于io.flutter.plugin.common.PluginRegistry.RequestPermissionsResultListener e:/Users/apple/.pub-cache/hosted/pub.dartlang.org/location-4.3.0/android/src/main/java/com/lyokone/location /FlutterLocationService.kt: (258, 5): 'onRequestPermissionsResult' 不覆盖任何内容
失败:构建失败并出现异常。
编译错误。查看日志了解更多详情
尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。使用 --scan 运行以获得完整的见解。
在https://help.gradle.org获取更多帮助
4 秒内构建失败异常:Gradle 任务 assembleDebug 失败,退出代码为 1
显示从具有搜索功能的第三方 API 获取的 A-List 错误仅在我运行应用程序时显示,它说 _InternalLinkedHashMap<String, dynamic>' 不是'Iterable 类型的子类型
请Welp *** Edit A new Error Showed after play the code this error shows type 'String' is not a subtype of type Map-dynamic, dynamic-
Future<Null> getStoreDetails() async {
var basicAuth = 'Basic ' +
base64Encode(utf8.encode('api_token_key'));
var result;
var response = await http.get(url, headers: {'authorization': basicAuth});
if (response.statusCode == 200) {
var responseJson = json.decode(response.body);
setState(() {
/Where the error is
for (Map storedetails in responseJson) {
_searchResult.add(StoreDetails.fromJson(storedetails));
}
});
} else …Run Code Online (Sandbox Code Playgroud) 我正在使用 flutter_map 插件和 OpenStreetMap 作为提供者。我有两个用于更改缩放级别的按钮,用于增加/减少 currentZoom 变量(双倍)。
在我的小部件的构建覆盖中,我正在重建地图,如下所示:
@override
Widget build(BuildContext context) {
FlutterMap currentmap = FlutterMap(
options: MapOptions(
center: LatLng(latitude, longitude),
onTap: (pos) {
print(pos);
},
zoom: currentZoom,
// debug: true,
),
layers: [
TileLayerOptions(
overrideTilesWhenUrlChanges: false,
urlTemplate:
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png?source=${DateTime.now().millisecondsSinceEpoch}",
subdomains: ['a', 'b', 'c'],
additionalOptions: {},
),
Run Code Online (Sandbox Code Playgroud)
,然后将 currentMap 用作画布的子级,这确实可以完美地工作。
请注意,我在 URL 末尾添加了 ?source= 来强制更新缓存(但删除此参数也不能解决问题)。
但是,当我更改按钮 onPressed 回调中的 currentZoom 级别然后调用 SetState 时,页面会重建,但地图缩放级别根本不会改变。
这是回调:
IconButton(icon: Icon(Icons.remove_circle_outline_rounded),
onPressed: () => setState(() {
currentZoom =
currentZoom < 1 ? 0 : currentZoom - …Run Code Online (Sandbox Code Playgroud) 如何将实时跟踪与flutter_map集成。有谁知道其中集成了哪个库?或如何实施?
我在我的应用程序中使用 Flutter_map 包和 MapBox API,我能够在地图中找到当前用户位置,但我想在地图上放置一个按钮,并在用户单击时将其视图更改为新位置就它而言(在我的代码中预定义为标记“secondPosition”的新位置),顺便说一句,我知道如何在 Google 地图包中执行此操作,但我不知道如何在 flutter_map 中执行此操作。
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:flutter_map_location_marker/flutter_map_location_marker.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:geolocator/geolocator.dart';
import 'package:latlong2/latlong.dart' as latLng;
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
State<MyHomePage> …Run Code Online (Sandbox Code Playgroud)