diff --git a/README.md b/README.md
index b5dcec5..14e161c 100644
--- a/README.md
+++ b/README.md
@@ -62,5 +62,5 @@ This project is licensed under the [MIT License](./LICENSE).
### 👨💻 Our Contributors
-
+
diff --git a/lib/app/api/api.dart b/lib/app/api/api.dart
index eccd99a..f2f6715 100644
--- a/lib/app/api/api.dart
+++ b/lib/app/api/api.dart
@@ -7,8 +7,8 @@ import 'package:rain/app/data/db.dart';
import 'package:rain/main.dart';
class WeatherAPI {
- final Dio dio = Dio()
- ..options.baseUrl = 'https://api.open-meteo.com/v1/forecast?';
+ final Dio dio =
+ Dio()..options.baseUrl = 'https://api.open-meteo.com/v1/forecast?';
final Dio dioLocation = Dio();
static const String _weatherParams =
@@ -41,14 +41,25 @@ class WeatherAPI {
}
}
- Future getWeatherCard(double lat, double lon, String city,
- String district, String timezone) async {
+ Future getWeatherCard(
+ double lat,
+ double lon,
+ String city,
+ String district,
+ String timezone,
+ ) async {
final String urlWeather = _buildWeatherUrl(lat, lon);
try {
Response response = await dio.get(urlWeather);
WeatherDataApi weatherData = WeatherDataApi.fromJson(response.data);
return _mapWeatherDataToCard(
- weatherData, lat, lon, city, district, timezone);
+ weatherData,
+ lat,
+ lon,
+ city,
+ district,
+ timezone,
+ );
} on DioException catch (e) {
if (kDebugMode) {
print(e);
@@ -124,8 +135,14 @@ class WeatherAPI {
);
}
- WeatherCard _mapWeatherDataToCard(WeatherDataApi weatherData, double lat,
- double lon, String city, String district, String timezone) {
+ WeatherCard _mapWeatherDataToCard(
+ WeatherDataApi weatherData,
+ double lat,
+ double lon,
+ String city,
+ String district,
+ String timezone,
+ ) {
return WeatherCard(
time: weatherData.hourly.time,
temperature2M: weatherData.hourly.temperature2M,
diff --git a/lib/app/api/city_api.dart b/lib/app/api/city_api.dart
index 55a3b6a..9712e75 100644
--- a/lib/app/api/city_api.dart
+++ b/lib/app/api/city_api.dart
@@ -1,15 +1,14 @@
class CityApi {
- CityApi({
- required this.results,
- });
+ CityApi({required this.results});
List results;
factory CityApi.fromJson(Map json) => CityApi(
- results: json['results'] == null
+ results:
+ json['results'] == null
? List.empty()
: List.from(json['results'].map((x) => Result.fromJson(x))),
- );
+ );
}
class Result {
@@ -26,9 +25,9 @@ class Result {
double longitude;
factory Result.fromJson(Map json) => Result(
- admin1: json['admin1'] ?? '',
- name: json['name'],
- latitude: json['latitude'],
- longitude: json['longitude'],
- );
+ admin1: json['admin1'] ?? '',
+ name: json['name'],
+ latitude: json['latitude'],
+ longitude: json['longitude'],
+ );
}
diff --git a/lib/app/controller/controller.dart b/lib/app/controller/controller.dart
index b4e6adf..3e28c5e 100644
--- a/lib/app/controller/controller.dart
+++ b/lib/app/controller/controller.dart
@@ -1,7 +1,6 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
-import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:flutter_timezone/flutter_timezone.dart';
import 'package:geocoding/geocoding.dart';
import 'package:geolocator/geolocator.dart';
@@ -53,15 +52,14 @@ class WeatherController extends GetxController {
@override
void onInit() {
- weatherCards
- .assignAll(isar.weatherCards.where().sortByIndex().findAllSync());
+ weatherCards.assignAll(
+ isar.weatherCards.where().sortByIndex().findAllSync(),
+ );
super.onInit();
}
- Future determinePosition() async {
- LocationPermission permission;
-
- permission = await Geolocator.checkPermission();
+ Future _determinePosition() async {
+ LocationPermission permission = await Geolocator.checkPermission();
if (permission == LocationPermission.denied) {
permission = await Geolocator.requestPermission();
if (permission == LocationPermission.denied) {
@@ -71,7 +69,8 @@ class WeatherController extends GetxController {
if (permission == LocationPermission.deniedForever) {
return Future.error(
- 'Location permissions are permanently denied, we cannot request permissions.');
+ 'Location permissions are permanently denied, we cannot request permissions.',
+ );
}
return await Geolocator.getCurrentPosition();
}
@@ -80,25 +79,26 @@ class WeatherController extends GetxController {
if (settings.location) {
await getCurrentLocation();
} else {
- if ((isar.locationCaches.where().findAllSync()).isNotEmpty) {
- LocationCache locationCity =
- (isar.locationCaches.where().findFirstSync())!;
- await getLocation(locationCity.lat!, locationCity.lon!,
- locationCity.district!, locationCity.city!);
+ final locationCity = isar.locationCaches.where().findFirstSync();
+ if (locationCity != null) {
+ await getLocation(
+ locationCity.lat!,
+ locationCity.lon!,
+ locationCity.district!,
+ locationCity.city!,
+ );
}
}
}
Future getCurrentLocation() async {
- bool serviceEnabled = await Geolocator.isLocationServiceEnabled();
-
if (!(await isOnline.value)) {
showSnackBar(content: 'no_inter'.tr);
await readCache();
return;
}
- if (!serviceEnabled) {
+ if (!await Geolocator.isLocationServiceEnabled()) {
showSnackBar(
content: 'no_location'.tr,
onPressed: () => Geolocator.openLocationSettings(),
@@ -107,70 +107,73 @@ class WeatherController extends GetxController {
return;
}
- if ((isar.mainWeatherCaches.where().findAllSync()).isNotEmpty) {
+ if (isar.mainWeatherCaches.where().findAllSync().isNotEmpty) {
await readCache();
return;
}
- Position position = await determinePosition();
- List placemarks =
- await placemarkFromCoordinates(position.latitude, position.longitude);
- Placemark place = placemarks[0];
+ final position = await _determinePosition();
+ final placemarks = await placemarkFromCoordinates(
+ position.latitude,
+ position.longitude,
+ );
+ final place = placemarks[0];
_latitude.value = position.latitude;
_longitude.value = position.longitude;
- _district.value = '${place.administrativeArea}';
- _city.value = '${place.locality}';
+ _district.value = place.administrativeArea ?? '';
+ _city.value = place.locality ?? '';
- _mainWeather.value =
- await WeatherAPI().getWeatherData(_latitude.value, _longitude.value);
+ _mainWeather.value = await WeatherAPI().getWeatherData(
+ _latitude.value,
+ _longitude.value,
+ );
notificationCheck();
-
await writeCache();
await readCache();
}
Future