Skip to content
Snippets Groups Projects
addevent.dart 23.33 KiB
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_datetime_picker/flutter_datetime_picker.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'datamodel.dart';
import 'databaseconnector.dart';
import 'dart:async';
import 'package:geolocator/geolocator.dart';

class AddEvent extends StatefulWidget {
  const AddEvent({Key? key}) : super(key: key);

  @override
  State<AddEvent> createState() => _AddEventPageState();
}

class _AddEventPageState extends State<AddEvent>  {
  bool syncGNSSData = true;
  bool _addButtonEnabled = true;
  late String long = "";
  late String lat = "";
  late String alt = "";
  late double accuracy = 0.0;
  late StreamSubscription<Position> streamHandler;  //For canceling GNSS stream on dispose
  final prefs = SharedPreferences.getInstance();  // Is async
  var database = DatabaseInstance();

  late OverlayEntry _overlayEntry;  //For event creation success notifications
  late Timer _overlayCloseTimer;

  Future startGNSS() async {
    final EventStoreInstance eventStore = EventStoreInstance();
    debugPrint("Check Location Permission");
    bool serviceStatus = false;
    bool hasPermission = false;
    serviceStatus = await Geolocator.isLocationServiceEnabled();
    if(serviceStatus){
      LocationPermission permission = await Geolocator.checkPermission();

      if (permission == LocationPermission.denied) {
        permission = await Geolocator.requestPermission();
        if (permission == LocationPermission.denied) {
          debugPrint('Location permissions are denied');
        }else if(permission == LocationPermission.deniedForever){
          debugPrint('Location permissions are permanently denied');
        }else{
          hasPermission = true;
        }
      }else{
        hasPermission = true;
      }
      if(hasPermission){
        debugPrint('Location permissions granted');
        if(mounted){
          setState(() {
            //refresh the UI
          });}
        debugPrint('Starting location stream');
        streamHandler = Geolocator.getPositionStream(
            locationSettings: const LocationSettings(
              accuracy: LocationAccuracy.high,
              distanceFilter: 0,
            )).listen((Position position) {
          debugPrint('Get Location: Lat:' + position.latitude.toString() +
              ' Long:' + position.longitude.toString() +
              ' Alt:' + position.altitude.toString());

          long = position.longitude.toString();
          lat = position.latitude.toString();
          alt = position.altitude.toString();