128 lines
4.2 KiB
Dart
128 lines
4.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_map/flutter_map.dart';
|
|
import 'package:latlong2/latlong.dart';
|
|
|
|
import '../app/constant.dart';
|
|
|
|
typedef void MyFunction();
|
|
|
|
showMapDialog({
|
|
required BuildContext context,
|
|
required double lat,
|
|
required double long,
|
|
required MyFunction confirm,
|
|
required MyFunction notConfirm,
|
|
required String address,
|
|
}) {
|
|
return showDialog(
|
|
context: context,
|
|
builder: (BuildContext context) {
|
|
return AlertDialog(
|
|
title: Text(
|
|
"Konfirmasi lokasi",
|
|
style: Constant.body1(context: context),
|
|
),
|
|
content: SizedBox(
|
|
width: Constant.getActualX(context: context, x: 280),
|
|
height: Constant.getActualY(context: context, y: 200),
|
|
child: SizedBox(
|
|
width: Constant.getActualX(context: context, x: 200),
|
|
height: Constant.getActualY(context: context, y: 100),
|
|
// child: FlutterMap(
|
|
// options: MapOptions(
|
|
// center: LatLng(lat, long),
|
|
// zoom: 16,
|
|
// ),
|
|
// nonRotatedChildren: [
|
|
// Align(
|
|
// alignment: Alignment.bottomLeft,
|
|
// child: Text(
|
|
// address,
|
|
// style: Constant.body1(context: context).copyWith(
|
|
// backgroundColor: Colors.black.withOpacity(0.5),
|
|
// color: Colors.white),
|
|
// ),
|
|
// ),
|
|
// ],
|
|
// children: [
|
|
// TileLayer(
|
|
// urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
|
|
// userAgentPackageName: 'com.example.app',
|
|
// ),
|
|
// MarkerLayer(
|
|
// markers: [
|
|
// Marker(
|
|
// point: LatLng(lat, long),
|
|
// width: 100,
|
|
// height: 100,
|
|
// builder: (context) => const Icon(
|
|
// Icons.location_on,
|
|
// color: Colors.red,
|
|
// size: 50,
|
|
// )),
|
|
// ],
|
|
// ),
|
|
// ],
|
|
// ),
|
|
child: FlutterMap(
|
|
options: MapOptions(
|
|
initialCenter: LatLng(lat, long),
|
|
initialZoom: 16,
|
|
),
|
|
children: [
|
|
TileLayer(
|
|
urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
|
|
userAgentPackageName: 'com.example.app',
|
|
),
|
|
MarkerLayer(
|
|
markers: [
|
|
Marker(
|
|
point: LatLng(lat, long),
|
|
width: 100,
|
|
height: 100,
|
|
child: const Icon(
|
|
Icons.location_on,
|
|
color: Colors.red,
|
|
size: 50,
|
|
),
|
|
),
|
|
],
|
|
),
|
|
Align(
|
|
alignment: Alignment.bottomLeft,
|
|
child: Padding(
|
|
padding: const EdgeInsets.all(8.0),
|
|
child: Text(
|
|
address,
|
|
style: Constant.body1(context: context).copyWith(
|
|
// backgroundColor: Colors.black.withOpacity(0.5),
|
|
backgroundColor: Colors.black.withAlpha(128),
|
|
color: Colors.white,
|
|
),
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
actions: [
|
|
OutlinedButton(
|
|
onPressed: () {
|
|
Navigator.pop(context);
|
|
notConfirm();
|
|
},
|
|
child: const Text("Ulangi"),
|
|
),
|
|
SizedBox(width: Constant.getActualX(context: context, x: 5)),
|
|
ElevatedButton(onPressed: confirm, child: Text("ya")),
|
|
SizedBox(width: Constant.getActualX(context: context, x: 10)),
|
|
],
|
|
shape: const RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.all(Radius.circular(24)),
|
|
),
|
|
);
|
|
},
|
|
);
|
|
}
|