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)),
        ),
      );
    },
  );
}
