add login
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
import 'package:get/get.dart';
|
||||
import 'package:geolocator/geolocator.dart';
|
||||
import '../../services/geolocation.dart';
|
||||
import '../models/ptv_logistic_model.dart';
|
||||
import '../services/ptv_api_simple.dart';
|
||||
|
||||
/// GetX Controller für Geolocation Funktionalität
|
||||
class GeolocationController extends GetxController {
|
||||
@@ -9,12 +11,14 @@ class GeolocationController extends GetxController {
|
||||
final _statusText = 'Noch keine Position ermittelt'.obs;
|
||||
final _isTracking = false.obs;
|
||||
final _isLoading = false.obs;
|
||||
final _ptvModel = Rxn<PTVModel>();
|
||||
|
||||
// Getter für reactive Variablen
|
||||
Position? get currentPosition => _currentPosition.value;
|
||||
String get statusText => _statusText.value;
|
||||
bool get isTracking => _isTracking.value;
|
||||
bool get isLoading => _isLoading.value;
|
||||
PTVModel? get ptvModel => _ptvModel.value;
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
@@ -34,7 +38,15 @@ class GeolocationController extends GetxController {
|
||||
if (position != null) {
|
||||
_currentPosition.value = position;
|
||||
_statusText.value = GeolocationService.positionToString(position);
|
||||
|
||||
var resultData = await PtvApiServiceSimple.getLocationsByPosition(
|
||||
latitude: position.latitude,
|
||||
longitude: position.longitude,
|
||||
);
|
||||
if(resultData != null) {
|
||||
_ptvModel.value = PTVModel.fromJson(resultData);
|
||||
} else {
|
||||
_ptvModel.value = null;
|
||||
}
|
||||
// Erfolgs-Snackbar anzeigen
|
||||
Get.snackbar(
|
||||
'Position ermittelt',
|
||||
|
||||
65
lib/controllers/login_controller.dart
Normal file
65
lib/controllers/login_controller.dart
Normal file
@@ -0,0 +1,65 @@
|
||||
import 'package:appwrite/appwrite.dart' as account_models;
|
||||
import 'package:appwrite/models.dart' as user_models;
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
||||
|
||||
class LoginController extends GetxController {
|
||||
final _account = Rxn<account_models.Account>();
|
||||
final mailController = TextEditingController();
|
||||
final passwordController = TextEditingController();
|
||||
final nameController = TextEditingController();
|
||||
final _endpoint = dotenv.env['APPWRITE_ENDPOINT_URL'] ?? '';
|
||||
final _projectId = dotenv.env['APPWRITE_PROJECT_ID'] ?? '';
|
||||
final _logedInUser = Rxn<user_models.User>();
|
||||
|
||||
account_models.Account? get account => _account.value;
|
||||
user_models.User? get logedInUser => _logedInUser.value;
|
||||
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
Client client = Client()
|
||||
.setEndpoint(_endpoint)
|
||||
.setProject(_projectId);
|
||||
_account.value = Account(client);
|
||||
super.onInit();
|
||||
}
|
||||
|
||||
Future<void> login(String email, String password) async {
|
||||
await _account.value!.createEmailPasswordSession(
|
||||
email: email,
|
||||
password: password,
|
||||
);
|
||||
final user = await _account.value!.get();
|
||||
|
||||
_logedInUser.value = user;
|
||||
|
||||
}
|
||||
|
||||
Future<void> register(String email, String password, String name) async {
|
||||
await _account.value!.create(
|
||||
userId: ID.unique(),
|
||||
email: email,
|
||||
password: password,
|
||||
name: name,
|
||||
);
|
||||
await login(email, password);
|
||||
}
|
||||
|
||||
Future<void> logout() async {
|
||||
await _account.value!.deleteSession(sessionId: 'current');
|
||||
_logedInUser.value = null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
mailController.dispose();
|
||||
passwordController.dispose();
|
||||
nameController.dispose();
|
||||
super.onClose();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user