Dar*_*rke 5 widget dart flutter
我现在有一个更新当前用户位置的功能,效果很好。问题是绘制的指针保持在那个确切的位置,因为装饰在小部件内部绘制一次并且永远不会改变。
我已经了解了 Google 如何使用标记对象来实现这一点,但这似乎对我的应用程序不起作用,因为我没有使用法线地图。
void updateLocationPin(LocationData newLocalData, Uint8List imageData){
LatLng latLng = LatLng(newLocalData.latitude!, newLocalData.longitude!);
this.setState(() {
/* marker = Marker(
markerId: MarkerId("home"),
position: latLng,
rotation: 0.5,
draggable: false,
flat: true,
zIndex: 2,
anchor: Offset(0.5, 0.5),
icon: BitmapDescriptor.fromBytes(imageData)
);*/
xPosition = latLng.longitude;
yPosition = latLng.latitude;
ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text("Position: ${xPosition}, ${yPosition}"), duration: Duration(milliseconds: 5000), ), );
});
}
@override
Widget build(BuildContext context) {
var dpr = MediaQuery.of(context).devicePixelRatio;
return Scaffold(
body: SafeArea(
child: Stack(
children: [
GestureDetector(
child: InteractiveViewer(
transformationController: controller,
constrained: false,
minScale: 0.1,
maxScale: 1.0,
child: Stack(children: [
Image.asset(
"assets/images/$level",
),
Positioned(
left: xPosition,
top: yPosition,
child: Container(
width: 50.0 / dpr,
height: 50.0 / dpr,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.red,
),
),
),
]),
boundaryMargin: EdgeInsets.all(100),
),
),
],
),
),
);
}
Run Code Online (Sandbox Code Playgroud)
每次被调用时我将如何更新绘制的圆圈updateLocationPin?我应该事先指出这一点,但我是一个完全的初学者,试图通过一些自我编码来学习,如果有人指出我可能错过的任何问题或不正确的代码,我们将非常感激。
尝试这个:
Color _newColor = Colors.red;
void updateLocationPin(LocationData newLocalData, Uint8List imageData){
LatLng latLng = LatLng(newLocalData.latitude!, newLocalData.longitude!);
this.setState(() {
/* marker = Marker(
markerId: MarkerId("home"),
position: latLng,
rotation: 0.5,
draggable: false,
flat: true,
zIndex: 2,
anchor: Offset(0.5, 0.5),
icon: BitmapDescriptor.fromBytes(imageData)
);*/
xPosition = latLng.longitude;
yPosition = latLng.latitude;
_newColor = Colors.blue;
ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text("Position: ${xPosition}, ${yPosition}"), duration: Duration(milliseconds: 5000), ), );
});
}
@override
Widget build(BuildContext context) {
var dpr = MediaQuery.of(context).devicePixelRatio;
return Scaffold(
body: SafeArea(
child: Stack(
children: [
GestureDetector(
child: InteractiveViewer(
transformationController: controller,
constrained: false,
minScale: 0.1,
maxScale: 1.0,
child: Stack(children: [
Image.asset(
"assets/images/$level",
),
Positioned(
left: xPosition,
top: yPosition,
child: Container(
width: 50.0 / dpr,
height: 50.0 / dpr,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: _newColor,
),
),
),
]),
boundaryMargin: EdgeInsets.all(100),
),
),
],
),
),
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |