mirror of
https://github.com/darkmoonight/Rain.git
synced 2025-06-28 20:19:58 +00:00
Add map
This commit is contained in:
parent
b2e843c5d9
commit
6c7da7b28d
16 changed files with 380 additions and 129 deletions
Binary file not shown.
Before Width: | Height: | Size: 3.5 KiB |
|
@ -1,6 +1,6 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:iconsax/iconsax.dart';
|
||||
import 'package:iconsax_plus/iconsax_plus.dart';
|
||||
import 'package:rain/app/controller/controller.dart';
|
||||
import 'package:rain/app/data/weather.dart';
|
||||
import 'package:rain/app/widgets/daily/weather_daily.dart';
|
||||
|
@ -67,7 +67,7 @@ class _InfoWeatherCardState extends State<InfoWeatherCard> {
|
|||
leading: IconButton(
|
||||
onPressed: () => Get.back(),
|
||||
icon: const Icon(
|
||||
Iconsax.arrow_left_1,
|
||||
IconsaxPlusLinear.arrow_left_3,
|
||||
size: 20,
|
||||
),
|
||||
),
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:iconsax/iconsax.dart';
|
||||
import 'package:iconsax_plus/iconsax_plus.dart';
|
||||
import 'package:rain/app/controller/controller.dart';
|
||||
import 'package:rain/app/modules/cards/widgets/weather_card_list.dart';
|
||||
import 'package:rain/app/widgets/text_form.dart';
|
||||
|
@ -66,7 +66,7 @@ class _ListWeatherCardState extends State<ListWeatherCard> {
|
|||
labelText: 'search'.tr,
|
||||
type: TextInputType.text,
|
||||
icon: const Icon(
|
||||
Iconsax.search_normal_1,
|
||||
IconsaxPlusLinear.search_normal_1,
|
||||
size: 20,
|
||||
),
|
||||
controller: searchTasks,
|
||||
|
@ -80,7 +80,7 @@ class _ListWeatherCardState extends State<ListWeatherCard> {
|
|||
applyFilter('');
|
||||
},
|
||||
icon: const Icon(
|
||||
Iconsax.close_circle,
|
||||
IconsaxPlusLinear.close_circle,
|
||||
color: Colors.grey,
|
||||
size: 20,
|
||||
),
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:iconsax/iconsax.dart';
|
||||
import 'package:iconsax_plus/iconsax_plus.dart';
|
||||
import 'package:rain/app/api/api.dart';
|
||||
import 'package:rain/app/api/city_api.dart';
|
||||
import 'package:rain/app/controller/controller.dart';
|
||||
|
@ -120,7 +120,7 @@ class _CreateWeatherCardState extends State<CreateWeatherCard>
|
|||
elevation: kTextFieldElevation,
|
||||
labelText: 'search'.tr,
|
||||
type: TextInputType.text,
|
||||
icon: const Icon(Iconsax.global_search),
|
||||
icon: const Icon(IconsaxPlusLinear.global_search),
|
||||
controller: _controller,
|
||||
margin: const EdgeInsets.only(
|
||||
left: 10, right: 10, top: 10),
|
||||
|
@ -176,7 +176,7 @@ class _CreateWeatherCardState extends State<CreateWeatherCard>
|
|||
controller: _controllerLat,
|
||||
labelText: 'lat'.tr,
|
||||
type: TextInputType.number,
|
||||
icon: const Icon(Iconsax.location),
|
||||
icon: const Icon(IconsaxPlusLinear.location),
|
||||
onChanged: (value) => setState(() {}),
|
||||
margin:
|
||||
const EdgeInsets.only(left: 10, right: 10, top: 10),
|
||||
|
@ -199,7 +199,7 @@ class _CreateWeatherCardState extends State<CreateWeatherCard>
|
|||
controller: _controllerLon,
|
||||
labelText: 'lon'.tr,
|
||||
type: TextInputType.number,
|
||||
icon: const Icon(Iconsax.location),
|
||||
icon: const Icon(IconsaxPlusLinear.location),
|
||||
onChanged: (value) => setState(() {}),
|
||||
margin:
|
||||
const EdgeInsets.only(left: 10, right: 10, top: 10),
|
||||
|
@ -222,7 +222,7 @@ class _CreateWeatherCardState extends State<CreateWeatherCard>
|
|||
controller: _controllerCity,
|
||||
labelText: 'city'.tr,
|
||||
type: TextInputType.name,
|
||||
icon: const Icon(Icons.location_city_rounded),
|
||||
icon: const Icon(IconsaxPlusLinear.building_3),
|
||||
onChanged: (value) => setState(() {}),
|
||||
margin:
|
||||
const EdgeInsets.only(left: 10, right: 10, top: 10),
|
||||
|
@ -238,7 +238,7 @@ class _CreateWeatherCardState extends State<CreateWeatherCard>
|
|||
controller: _controllerDistrict,
|
||||
labelText: 'district'.tr,
|
||||
type: TextInputType.streetAddress,
|
||||
icon: const Icon(Iconsax.global),
|
||||
icon: const Icon(IconsaxPlusLinear.global),
|
||||
onChanged: (value) => setState(() {}),
|
||||
margin:
|
||||
const EdgeInsets.only(left: 10, right: 10, top: 10),
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:iconsax/iconsax.dart';
|
||||
import 'package:iconsax_plus/iconsax_plus.dart';
|
||||
import 'package:rain/app/controller/controller.dart';
|
||||
import 'package:rain/app/modules/cards/view/info_weather_card.dart';
|
||||
import 'package:rain/app/modules/cards/widgets/weather_card_container.dart';
|
||||
|
@ -43,7 +43,7 @@ class _WeatherCardListState extends State<WeatherCardList> {
|
|||
child: const Padding(
|
||||
padding: EdgeInsets.only(right: 15),
|
||||
child: Icon(
|
||||
Iconsax.trush_square,
|
||||
IconsaxPlusLinear.trash_square,
|
||||
color: Colors.red,
|
||||
),
|
||||
),
|
||||
|
|
|
@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
|||
import 'package:gap/gap.dart';
|
||||
import 'package:geolocator/geolocator.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:iconsax/iconsax.dart';
|
||||
import 'package:iconsax_plus/iconsax_plus.dart';
|
||||
import 'package:rain/app/api/api.dart';
|
||||
import 'package:rain/app/api/city_api.dart';
|
||||
import 'package:rain/app/controller/controller.dart';
|
||||
|
@ -75,7 +75,7 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
|
|||
Get.back();
|
||||
},
|
||||
icon: const Icon(
|
||||
Iconsax.arrow_left_1,
|
||||
IconsaxPlusLinear.arrow_left_3,
|
||||
size: 20,
|
||||
),
|
||||
splashColor: Colors.transparent,
|
||||
|
@ -132,8 +132,8 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
|
|||
elevation: kTextFieldElevation,
|
||||
labelText: 'search'.tr,
|
||||
type: TextInputType.text,
|
||||
icon: const Icon(
|
||||
Iconsax.global_search),
|
||||
icon: const Icon(IconsaxPlusLinear
|
||||
.global_search),
|
||||
controller: _controller,
|
||||
margin: const EdgeInsets.only(
|
||||
left: 10, right: 10, top: 10),
|
||||
|
@ -276,7 +276,7 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
|
|||
setState(() => isLoading = false);
|
||||
},
|
||||
icon: const Icon(
|
||||
Iconsax.location,
|
||||
IconsaxPlusLinear.location,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
@ -288,7 +288,7 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
|
|||
controller: _controllerLat,
|
||||
labelText: 'lat'.tr,
|
||||
type: TextInputType.number,
|
||||
icon: const Icon(Iconsax.location),
|
||||
icon: const Icon(IconsaxPlusLinear.location),
|
||||
margin: const EdgeInsets.only(
|
||||
left: 10,
|
||||
right: 10,
|
||||
|
@ -315,7 +315,7 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
|
|||
controller: _controllerLon,
|
||||
labelText: 'lon'.tr,
|
||||
type: TextInputType.number,
|
||||
icon: const Icon(Iconsax.location),
|
||||
icon: const Icon(IconsaxPlusLinear.location),
|
||||
margin: const EdgeInsets.only(
|
||||
left: 10,
|
||||
right: 10,
|
||||
|
@ -342,7 +342,8 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
|
|||
controller: _controllerCity,
|
||||
labelText: 'city'.tr,
|
||||
type: TextInputType.name,
|
||||
icon: const Icon(Icons.location_city_rounded),
|
||||
icon:
|
||||
const Icon(IconsaxPlusLinear.building_3),
|
||||
margin: const EdgeInsets.only(
|
||||
left: 10, right: 10, top: 10),
|
||||
validator: (value) {
|
||||
|
@ -357,7 +358,7 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
|
|||
controller: _controllerDistrict,
|
||||
labelText: 'district'.tr,
|
||||
type: TextInputType.streetAddress,
|
||||
icon: const Icon(Iconsax.global),
|
||||
icon: const Icon(IconsaxPlusLinear.global),
|
||||
margin: const EdgeInsets.only(
|
||||
left: 10, right: 10, top: 10),
|
||||
),
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:iconsax/iconsax.dart';
|
||||
import 'package:iconsax_plus/iconsax_plus.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:rain/app/api/api.dart';
|
||||
import 'package:rain/app/api/city_api.dart';
|
||||
|
@ -10,6 +10,7 @@ import 'package:rain/app/modules/cards/view/list_weather_card.dart';
|
|||
import 'package:rain/app/modules/cards/widgets/create_card_weather.dart';
|
||||
import 'package:rain/app/modules/geolocation.dart';
|
||||
import 'package:rain/app/modules/main/view/weather_main.dart';
|
||||
import 'package:rain/app/modules/map/view/map.dart';
|
||||
import 'package:rain/app/modules/settings/view/settings.dart';
|
||||
import 'package:rain/app/services/utils.dart';
|
||||
import 'package:rain/main.dart';
|
||||
|
@ -32,6 +33,7 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
|
|||
final pages = [
|
||||
const WeatherPage(),
|
||||
const ListWeatherCard(),
|
||||
const MapWeather(),
|
||||
const SettingsPage(),
|
||||
];
|
||||
|
||||
|
@ -73,6 +75,11 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
|
|||
final textTheme = context.textTheme;
|
||||
final labelLarge = textTheme.labelLarge;
|
||||
|
||||
final textStyle = textTheme.titleMedium?.copyWith(
|
||||
fontWeight: FontWeight.w600,
|
||||
fontSize: 18,
|
||||
);
|
||||
|
||||
return DefaultTabController(
|
||||
length: pages.length,
|
||||
child: ScaffoldMessenger(
|
||||
|
@ -88,7 +95,7 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
|
|||
transition: Transition.downToUp);
|
||||
},
|
||||
icon: const Icon(
|
||||
Iconsax.global_search,
|
||||
IconsaxPlusLinear.global_search,
|
||||
size: 18,
|
||||
),
|
||||
),
|
||||
|
@ -184,26 +191,21 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
|
|||
.isNotEmpty
|
||||
? 'loading'.tr
|
||||
: 'searchCity'.tr,
|
||||
style: textTheme.titleMedium?.copyWith(
|
||||
fontWeight: FontWeight.w600,
|
||||
fontSize: 18,
|
||||
),
|
||||
style: textStyle,
|
||||
);
|
||||
},
|
||||
),
|
||||
1 => Text(
|
||||
'cities'.tr,
|
||||
style: textTheme.titleMedium?.copyWith(
|
||||
fontWeight: FontWeight.w600,
|
||||
fontSize: 18,
|
||||
),
|
||||
style: textStyle,
|
||||
),
|
||||
2 => Text(
|
||||
'map'.tr,
|
||||
style: textStyle,
|
||||
),
|
||||
3 => Text(
|
||||
'settings_full'.tr,
|
||||
style: textTheme.titleMedium?.copyWith(
|
||||
fontWeight: FontWeight.w600,
|
||||
fontSize: 18,
|
||||
),
|
||||
style: textStyle,
|
||||
),
|
||||
int() => null,
|
||||
},
|
||||
|
@ -221,7 +223,9 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
|
|||
setState(() {});
|
||||
},
|
||||
icon: Icon(
|
||||
visible ? Icons.close : Iconsax.search_normal_1,
|
||||
visible
|
||||
? IconsaxPlusLinear.close_circle
|
||||
: IconsaxPlusLinear.search_normal_1,
|
||||
size: 18,
|
||||
),
|
||||
)
|
||||
|
@ -240,18 +244,23 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
|
|||
selectedIndex: tabIndex,
|
||||
destinations: [
|
||||
NavigationDestination(
|
||||
icon: const Icon(Iconsax.cloud_sunny),
|
||||
selectedIcon: const Icon(Iconsax.cloud_sunny5),
|
||||
icon: const Icon(IconsaxPlusLinear.cloud_sunny),
|
||||
selectedIcon: const Icon(IconsaxPlusBold.cloud_sunny),
|
||||
label: 'name'.tr,
|
||||
),
|
||||
NavigationDestination(
|
||||
icon: const Icon(Iconsax.map_1),
|
||||
selectedIcon: const Icon(Iconsax.map5),
|
||||
icon: const Icon(IconsaxPlusLinear.buildings),
|
||||
selectedIcon: const Icon(IconsaxPlusBold.buildings),
|
||||
label: 'cities'.tr,
|
||||
),
|
||||
NavigationDestination(
|
||||
icon: const Icon(Iconsax.category),
|
||||
selectedIcon: const Icon(Iconsax.category5),
|
||||
icon: const Icon(IconsaxPlusLinear.map),
|
||||
selectedIcon: const Icon(IconsaxPlusBold.map),
|
||||
label: 'map'.tr,
|
||||
),
|
||||
NavigationDestination(
|
||||
icon: const Icon(IconsaxPlusLinear.category),
|
||||
selectedIcon: const Icon(IconsaxPlusBold.category),
|
||||
label: 'settings_full'.tr,
|
||||
),
|
||||
],
|
||||
|
@ -266,7 +275,7 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
|
|||
const CreateWeatherCard(),
|
||||
),
|
||||
child: const Icon(
|
||||
Iconsax.add,
|
||||
IconsaxPlusLinear.add,
|
||||
),
|
||||
)
|
||||
: null,
|
||||
|
|
95
lib/app/modules/map/view/map.dart
Normal file
95
lib/app/modules/map/view/map.dart
Normal file
|
@ -0,0 +1,95 @@
|
|||
import 'dart:io';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_map/flutter_map.dart';
|
||||
import 'package:flutter_map_animations/flutter_map_animations.dart';
|
||||
import 'package:flutter_map_cache/flutter_map_cache.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:latlong2/latlong.dart';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'package:rain/app/controller/controller.dart';
|
||||
import 'package:dio_cache_interceptor/dio_cache_interceptor.dart';
|
||||
import 'package:dio_cache_interceptor_file_store/dio_cache_interceptor_file_store.dart';
|
||||
|
||||
class MapWeather extends StatefulWidget {
|
||||
const MapWeather({super.key});
|
||||
|
||||
@override
|
||||
State<MapWeather> createState() => _MapWeatherState();
|
||||
}
|
||||
|
||||
class _MapWeatherState extends State<MapWeather> with TickerProviderStateMixin {
|
||||
late final _animatedMapController = AnimatedMapController(vsync: this);
|
||||
final weatherController = Get.put(WeatherController());
|
||||
|
||||
final Future<CacheStore> _cacheStoreFuture = _getCacheStore();
|
||||
|
||||
static Future<CacheStore> _getCacheStore() async {
|
||||
final dir = await getTemporaryDirectory();
|
||||
return FileCacheStore('${dir.path}${Platform.pathSeparator}MapTiles');
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final mainLocation = weatherController.location;
|
||||
bool isDarkMode = Theme.of(context).brightness == Brightness.dark;
|
||||
|
||||
Widget darkModeTilesContainerBuilder(
|
||||
BuildContext context,
|
||||
Widget tilesContainer,
|
||||
) {
|
||||
return ColorFiltered(
|
||||
colorFilter: const ColorFilter.matrix(<double>[
|
||||
-0.2126, -0.7152, -0.0722, 0, 255, // Red channel
|
||||
-0.2126, -0.7152, -0.0722, 0, 255, // Green channel
|
||||
-0.2126, -0.7152, -0.0722, 0, 255, // Blue channel
|
||||
0, 0, 0, 1, 0, // Alpha channel
|
||||
]),
|
||||
child: tilesContainer,
|
||||
);
|
||||
}
|
||||
|
||||
Widget openStreetMapTileLayer(CacheStore cacheStore) {
|
||||
return TileLayer(
|
||||
urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
|
||||
userAgentPackageName: 'com.darkmoonight.rain',
|
||||
tileProvider: CachedTileProvider(
|
||||
store: cacheStore,
|
||||
maxStale: const Duration(days: 30),
|
||||
));
|
||||
}
|
||||
|
||||
return FutureBuilder<CacheStore>(
|
||||
future: _cacheStoreFuture,
|
||||
builder: (context, snapshot) {
|
||||
if (snapshot.hasData) {
|
||||
final cacheStore = snapshot.data!;
|
||||
return FlutterMap(
|
||||
mapController: _animatedMapController.mapController,
|
||||
options: MapOptions(
|
||||
backgroundColor: context.theme.scaffoldBackgroundColor,
|
||||
initialCenter: LatLng(mainLocation.lat!, mainLocation.lon!),
|
||||
initialZoom: 12,
|
||||
cameraConstraint: CameraConstraint.contain(
|
||||
bounds: LatLngBounds(
|
||||
const LatLng(-90, -180),
|
||||
const LatLng(90, 180),
|
||||
),
|
||||
),
|
||||
),
|
||||
children: [
|
||||
isDarkMode
|
||||
? darkModeTilesContainerBuilder(
|
||||
context, openStreetMapTileLayer(cacheStore))
|
||||
: openStreetMapTileLayer(cacheStore)
|
||||
],
|
||||
);
|
||||
}
|
||||
if (snapshot.hasError) {
|
||||
return Center(child: Text(snapshot.error.toString()));
|
||||
}
|
||||
return const Center(child: CircularProgressIndicator());
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
|
@ -5,8 +5,9 @@ import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
|||
import 'package:gap/gap.dart';
|
||||
import 'package:geolocator/geolocator.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:iconsax/iconsax.dart';
|
||||
import 'package:iconsax_plus/iconsax_plus.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:line_awesome_flutter/line_awesome_flutter.dart';
|
||||
import 'package:package_info_plus/package_info_plus.dart';
|
||||
import 'package:rain/app/controller/controller.dart';
|
||||
import 'package:rain/app/data/weather.dart';
|
||||
|
@ -64,7 +65,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
SettingCard(
|
||||
icon: const Icon(Iconsax.brush_1),
|
||||
icon: const Icon(IconsaxPlusLinear.brush_1),
|
||||
text: 'appearance'.tr,
|
||||
onPressed: () {
|
||||
showModalBottomSheet(
|
||||
|
@ -92,7 +93,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.moon),
|
||||
icon: const Icon(IconsaxPlusLinear.moon),
|
||||
text: 'theme'.tr,
|
||||
dropdown: true,
|
||||
dropdownName: settings.theme?.tr,
|
||||
|
@ -123,7 +124,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.mobile),
|
||||
icon: const Icon(IconsaxPlusLinear.mobile),
|
||||
text: 'amoledTheme'.tr,
|
||||
switcher: true,
|
||||
value: settings.amoledTheme,
|
||||
|
@ -135,7 +136,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.colorfilter),
|
||||
icon: const Icon(IconsaxPlusLinear.colorfilter),
|
||||
text: 'materialColor'.tr,
|
||||
switcher: true,
|
||||
value: settings.materialColor,
|
||||
|
@ -147,7 +148,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.additem),
|
||||
icon: const Icon(IconsaxPlusLinear.additem),
|
||||
text: 'largeElement'.tr,
|
||||
switcher: true,
|
||||
value: settings.largeElement,
|
||||
|
@ -175,7 +176,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
},
|
||||
),
|
||||
SettingCard(
|
||||
icon: const Icon(Iconsax.code),
|
||||
icon: const Icon(IconsaxPlusLinear.code_1),
|
||||
text: 'functions'.tr,
|
||||
onPressed: () {
|
||||
showModalBottomSheet(
|
||||
|
@ -203,7 +204,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.map_1),
|
||||
icon: const Icon(IconsaxPlusLinear.map),
|
||||
text: 'location'.tr,
|
||||
switcher: true,
|
||||
value: settings.location,
|
||||
|
@ -270,7 +271,8 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.notification_1),
|
||||
icon: const Icon(
|
||||
IconsaxPlusLinear.notification_1),
|
||||
text: 'notifications'.tr,
|
||||
switcher: true,
|
||||
value: settings.notifications,
|
||||
|
@ -307,7 +309,8 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.notification_status),
|
||||
icon: const Icon(
|
||||
IconsaxPlusLinear.notification_status),
|
||||
text: 'timeRange'.tr,
|
||||
dropdown: true,
|
||||
dropdownName: '$timeRange',
|
||||
|
@ -334,7 +337,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.timer_start),
|
||||
icon: const Icon(IconsaxPlusLinear.timer_start),
|
||||
text: 'timeStart'.tr,
|
||||
info: true,
|
||||
infoSettings: true,
|
||||
|
@ -394,7 +397,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.timer_pause),
|
||||
icon: const Icon(IconsaxPlusLinear.timer_pause),
|
||||
text: 'timeEnd'.tr,
|
||||
info: true,
|
||||
infoSettings: true,
|
||||
|
@ -464,7 +467,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
},
|
||||
),
|
||||
SettingCard(
|
||||
icon: const Icon(Iconsax.d_square),
|
||||
icon: const Icon(IconsaxPlusLinear.d_square),
|
||||
text: 'data'.tr,
|
||||
onPressed: () {
|
||||
showModalBottomSheet(
|
||||
|
@ -492,7 +495,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.cloud_notif),
|
||||
icon: const Icon(IconsaxPlusLinear.cloud_notif),
|
||||
text: 'roundDegree'.tr,
|
||||
switcher: true,
|
||||
value: settings.roundDegree,
|
||||
|
@ -510,7 +513,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.sun_1),
|
||||
icon: const Icon(IconsaxPlusLinear.sun_1),
|
||||
text: 'degrees'.tr,
|
||||
dropdown: true,
|
||||
dropdownName: settings.degrees.tr,
|
||||
|
@ -533,7 +536,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.rulerpen),
|
||||
icon: const Icon(IconsaxPlusLinear.rulerpen),
|
||||
text: 'measurements'.tr,
|
||||
dropdown: true,
|
||||
dropdownName: settings.measurements.tr,
|
||||
|
@ -557,7 +560,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.wind),
|
||||
icon: const Icon(IconsaxPlusLinear.wind),
|
||||
text: 'wind'.tr,
|
||||
dropdown: true,
|
||||
dropdownName: settings.wind.tr,
|
||||
|
@ -573,7 +576,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.ruler),
|
||||
icon: const Icon(IconsaxPlusLinear.ruler),
|
||||
text: 'pressure'.tr,
|
||||
dropdown: true,
|
||||
dropdownName: settings.pressure.tr,
|
||||
|
@ -589,7 +592,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.clock),
|
||||
icon: const Icon(IconsaxPlusLinear.clock_1),
|
||||
text: 'timeformat'.tr,
|
||||
dropdown: true,
|
||||
dropdownName: settings.timeformat.tr,
|
||||
|
@ -615,7 +618,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
},
|
||||
),
|
||||
SettingCard(
|
||||
icon: const Icon(Iconsax.setting_3),
|
||||
icon: const Icon(IconsaxPlusLinear.setting_3),
|
||||
text: 'widget'.tr,
|
||||
onPressed: () {
|
||||
showModalBottomSheet(
|
||||
|
@ -643,7 +646,8 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.bucket_square),
|
||||
icon:
|
||||
const Icon(IconsaxPlusLinear.bucket_square),
|
||||
text: 'widgetBackground'.tr,
|
||||
info: true,
|
||||
infoWidget: CircleAvatar(
|
||||
|
@ -711,7 +715,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
IconButton(
|
||||
icon: const Icon(
|
||||
Iconsax.tick_square,
|
||||
IconsaxPlusLinear.tick_square,
|
||||
),
|
||||
onPressed: () {
|
||||
if (colorBackground == null) {
|
||||
|
@ -735,7 +739,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.text_block),
|
||||
icon: const Icon(IconsaxPlusLinear.text_block),
|
||||
text: 'widgetText'.tr,
|
||||
info: true,
|
||||
infoWidget: CircleAvatar(
|
||||
|
@ -800,7 +804,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
IconButton(
|
||||
icon: const Icon(
|
||||
Iconsax.tick_square,
|
||||
IconsaxPlusLinear.tick_square,
|
||||
),
|
||||
onPressed: () {
|
||||
if (colorText == null) return;
|
||||
|
@ -832,7 +836,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
},
|
||||
),
|
||||
SettingCard(
|
||||
icon: const Icon(Iconsax.language_square),
|
||||
icon: const Icon(IconsaxPlusLinear.language_square),
|
||||
text: 'language'.tr,
|
||||
info: true,
|
||||
infoSettings: true,
|
||||
|
@ -899,7 +903,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
},
|
||||
),
|
||||
SettingCard(
|
||||
icon: const Icon(Iconsax.dollar_square),
|
||||
icon: const Icon(IconsaxPlusLinear.dollar_square),
|
||||
text: 'support'.tr,
|
||||
onPressed: () {
|
||||
showModalBottomSheet(
|
||||
|
@ -927,14 +931,14 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.card),
|
||||
icon: const Icon(IconsaxPlusLinear.card),
|
||||
text: 'DonationAlerts',
|
||||
onPressed: () => urlLauncher(
|
||||
'https://www.donationalerts.com/r/darkmoonight'),
|
||||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.wallet),
|
||||
icon: const Icon(IconsaxPlusLinear.wallet),
|
||||
text: 'ЮMoney',
|
||||
onPressed: () => urlLauncher(
|
||||
'https://yoomoney.ru/to/4100117672775961'),
|
||||
|
@ -951,7 +955,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
},
|
||||
),
|
||||
SettingCard(
|
||||
icon: const Icon(Iconsax.link_square),
|
||||
icon: const Icon(IconsaxPlusLinear.link_square),
|
||||
text: 'groups'.tr,
|
||||
onPressed: () {
|
||||
showModalBottomSheet(
|
||||
|
@ -979,7 +983,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.voice_square),
|
||||
icon: const Icon(LineAwesomeIcons.discord),
|
||||
text: 'Discord',
|
||||
onPressed: () async {
|
||||
final Uri url = Uri.parse(
|
||||
|
@ -992,7 +996,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
SettingCard(
|
||||
elevation: 4,
|
||||
icon: const Icon(Iconsax.message_square),
|
||||
icon: const Icon(LineAwesomeIcons.telegram),
|
||||
text: 'Telegram',
|
||||
onPressed: () async {
|
||||
final Uri url =
|
||||
|
@ -1015,7 +1019,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
},
|
||||
),
|
||||
SettingCard(
|
||||
icon: const Icon(Iconsax.document),
|
||||
icon: const Icon(IconsaxPlusLinear.document),
|
||||
text: 'license'.tr,
|
||||
onPressed: () => Get.to(
|
||||
LicensePage(
|
||||
|
@ -1037,7 +1041,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
),
|
||||
SettingCard(
|
||||
icon: const Icon(Iconsax.hierarchy_square_2),
|
||||
icon: const Icon(IconsaxPlusLinear.hierarchy_square_2),
|
||||
text: 'version'.tr,
|
||||
info: true,
|
||||
infoWidget: _TextInfo(
|
||||
|
@ -1045,10 +1049,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||
),
|
||||
),
|
||||
SettingCard(
|
||||
icon: Image.asset(
|
||||
'assets/images/github.png',
|
||||
scale: 20,
|
||||
),
|
||||
icon: const Icon(LineAwesomeIcons.github),
|
||||
text: '${'project'.tr} GitHub',
|
||||
onPressed: () =>
|
||||
urlLauncher('https://github.com/darkmoonight/Rain'),
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:iconsax/iconsax.dart';
|
||||
import 'package:iconsax_plus/iconsax_plus.dart';
|
||||
|
||||
class SettingCard extends StatelessWidget {
|
||||
const SettingCard({
|
||||
|
@ -63,7 +63,7 @@ class SettingCard extends StatelessWidget {
|
|||
? DropdownButton<String>(
|
||||
icon: const Padding(
|
||||
padding: EdgeInsets.only(left: 7),
|
||||
child: Icon(Iconsax.arrow_down_1),
|
||||
child: Icon(IconsaxPlusLinear.arrow_down),
|
||||
),
|
||||
iconSize: 15,
|
||||
alignment: AlignmentDirectional.centerEnd,
|
||||
|
@ -85,14 +85,14 @@ class SettingCard extends StatelessWidget {
|
|||
children: [
|
||||
infoWidget!,
|
||||
const Icon(
|
||||
Iconsax.arrow_right_3,
|
||||
IconsaxPlusLinear.arrow_right_3,
|
||||
size: 18,
|
||||
),
|
||||
],
|
||||
)
|
||||
: infoWidget!
|
||||
: const Icon(
|
||||
Iconsax.arrow_right_3,
|
||||
IconsaxPlusLinear.arrow_right_3,
|
||||
size: 18,
|
||||
),
|
||||
),
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:iconsax/iconsax.dart';
|
||||
import 'package:iconsax_plus/iconsax_plus.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:rain/app/data/weather.dart';
|
||||
import 'package:rain/app/widgets/desc/desc_container.dart';
|
||||
|
@ -65,7 +65,7 @@ class _InfoDailyCardState extends State<InfoDailyCard> {
|
|||
Get.back();
|
||||
},
|
||||
icon: const Icon(
|
||||
Iconsax.arrow_left_1,
|
||||
IconsaxPlusLinear.arrow_left_3,
|
||||
size: 20,
|
||||
),
|
||||
splashColor: Colors.transparent,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:iconsax/iconsax.dart';
|
||||
import 'package:iconsax_plus/iconsax_plus.dart';
|
||||
import 'package:rain/app/data/weather.dart';
|
||||
import 'package:rain/app/widgets/daily/info_daily_card.dart';
|
||||
import 'package:rain/app/widgets/daily/list_daily_card.dart';
|
||||
|
@ -32,7 +32,7 @@ class _WeatherMoreState extends State<WeatherMore> {
|
|||
Get.back();
|
||||
},
|
||||
icon: const Icon(
|
||||
Iconsax.arrow_left_1,
|
||||
IconsaxPlusLinear.arrow_left_3,
|
||||
size: 20,
|
||||
),
|
||||
splashColor: transparent,
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_glow/flutter_glow.dart';
|
||||
import 'package:gap/gap.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
|
@ -51,12 +50,17 @@ class _WeatherNowState extends State<WeatherNow> {
|
|||
fit: BoxFit.fill,
|
||||
height: 200,
|
||||
),
|
||||
GlowText(
|
||||
Text(
|
||||
'${roundDegree ? widget.degree.round() : widget.degree}',
|
||||
style: context.textTheme.displayLarge?.copyWith(
|
||||
fontSize: 90,
|
||||
fontWeight: FontWeight.w800,
|
||||
),
|
||||
fontSize: 90,
|
||||
fontWeight: FontWeight.w800,
|
||||
shadows: const [
|
||||
Shadow(
|
||||
blurRadius: 15,
|
||||
offset: Offset(5, 5),
|
||||
)
|
||||
]),
|
||||
),
|
||||
Text(
|
||||
statusWeather.getText(widget.weather),
|
||||
|
|
|
@ -132,5 +132,6 @@ class RuRu {
|
|||
'hourlyVariables': 'Почасовые погодные условия',
|
||||
'dailyVariables': 'Ежедневные погодные условия',
|
||||
'largeElement': 'Отображение погоды большим элементом',
|
||||
'map': 'Карта',
|
||||
};
|
||||
}
|
||||
|
|
177
pubspec.lock
177
pubspec.lock
|
@ -26,10 +26,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: ansicolor
|
||||
sha256: "8bf17a8ff6ea17499e40a2d2542c2f481cd7615760c6d34065cb22bfd22e6880"
|
||||
sha256: "50e982d500bc863e1d703448afdbf9e5a72eb48840a4f766fa361ffd6877055f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.2"
|
||||
version: "2.0.3"
|
||||
archive:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -214,6 +214,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
dart_earcut:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: dart_earcut
|
||||
sha256: "41b493147e30a051efb2da1e3acb7f38fe0db60afba24ac1ea5684cee272721e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
dart_style:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -262,6 +270,22 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.5.0+1"
|
||||
dio_cache_interceptor:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: dio_cache_interceptor
|
||||
sha256: fb7905c0d12075d8786a6b63bffd64ae062d053f682cfaf28d145a2686507308
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.5.0"
|
||||
dio_cache_interceptor_file_store:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: dio_cache_interceptor_file_store
|
||||
sha256: "9c5eff94481913ade139bb33ce58095483aae805aa1cb39c0471ca76f624c366"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.3"
|
||||
dio_web_adapter:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -290,10 +314,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: ffi
|
||||
sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21"
|
||||
sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.2"
|
||||
version: "2.1.3"
|
||||
file:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -323,15 +347,6 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.6.0"
|
||||
flutter_glow:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
path: "."
|
||||
ref: HEAD
|
||||
resolved-ref: "7c5e1fd34583db4b40073add9ca329b03bf52a51"
|
||||
url: "https://github.com/payam-zahedi/flutter-glow.git"
|
||||
source: git
|
||||
version: "0.3.1"
|
||||
flutter_hsvcolor_picker:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -385,6 +400,38 @@ packages:
|
|||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
flutter_map:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_map
|
||||
sha256: "2ecb34619a4be19df6f40c2f8dce1591675b4eff7a6857bd8f533706977385da"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.0.2"
|
||||
flutter_map_animations:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_map_animations
|
||||
sha256: "826c10a551d9dbb686a8ed9ee8815b974475812c41beb4ce9fe19095fe1c5611"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.0"
|
||||
flutter_map_cache:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_map_cache
|
||||
sha256: "47607b8d95ca791f0367d18955035d098faf80990e5e3bb0dbfa26271a6c2f43"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.5.1"
|
||||
flutter_map_cancellable_tile_provider:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_map_cancellable_tile_provider
|
||||
sha256: "6a2221be8044bd2abfd6ec1de97483fe03f01c7f8b6c2adb4ba160f60d95699a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
flutter_native_splash:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
|
@ -595,14 +642,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.2"
|
||||
iconsax:
|
||||
iconsax_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: iconsax
|
||||
sha256: fb0144c61f41f3f8a385fadc27783ea9f5359670be885ed7f35cef32565d5228
|
||||
name: iconsax_plus
|
||||
sha256: e9e51b0652a1d3ceea5fedbfc2c1bb4ad432c2ceb7be7de2e30caf085678933c
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.0.8"
|
||||
version: "1.0.0"
|
||||
image:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -691,6 +738,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.0"
|
||||
latlong2:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: latlong2
|
||||
sha256: "98227922caf49e6056f91b6c56945ea1c7b166f28ffcd5fb8e72fc0b453cc8fe"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.9.1"
|
||||
leak_tracker:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -715,6 +770,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
line_awesome_flutter:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: line_awesome_flutter
|
||||
sha256: "24cef0a34816ffed9846f1793172333be50dc29678d499893b3cb38d3c53db24"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
lints:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -723,6 +786,22 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.0"
|
||||
lists:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: lists
|
||||
sha256: "4ca5c19ae4350de036a7e996cdd1ee39c93ac0a2b840f4915459b7d0a7d4ab27"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.1"
|
||||
logger:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: logger
|
||||
sha256: "697d067c60c20999686a0add96cf6aba723b3aa1f83ecf806a8097231529ec32"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.0"
|
||||
logging:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -755,6 +834,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.11.1"
|
||||
material_floating_search_bar_2:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: material_floating_search_bar_2
|
||||
sha256: ab0c6d209d9491f98dd4c72f2641d0ba1dd35c87effca1f23d8679bece43add0
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.5.0"
|
||||
meta:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -763,6 +850,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.15.0"
|
||||
mgrs_dart:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: mgrs_dart
|
||||
sha256: fb89ae62f05fa0bb90f70c31fc870bcbcfd516c843fb554452ab3396f78586f7
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.0"
|
||||
mime:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -823,10 +918,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_android
|
||||
sha256: "490539678396d4c3c0b06efdaab75ae60675c3e0c66f72bc04c2e2c1e0e2abeb"
|
||||
sha256: "6f01f8e37ec30b07bc424b4deabac37cacb1bc7e2e515ad74486039918a37eb7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.9"
|
||||
version: "2.2.10"
|
||||
path_provider_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -883,6 +978,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.8"
|
||||
polylabel:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: polylabel
|
||||
sha256: "41b9099afb2aa6c1730bdd8a0fab1400d287694ec7615dd8516935fa3144214b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.1"
|
||||
pool:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -891,6 +994,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.5.1"
|
||||
proj4dart:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: proj4dart
|
||||
sha256: c8a659ac9b6864aa47c171e78d41bbe6f5e1d7bd790a5814249e6b68bc44324e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.0"
|
||||
pub_semver:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1008,6 +1119,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.0"
|
||||
synchronized:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: synchronized
|
||||
sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.0+1"
|
||||
term_glyph:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1064,6 +1183,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.2"
|
||||
unicode:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: unicode
|
||||
sha256: "0f69e46593d65245774d4f17125c6084d2c20b4e473a983f6e21b7d7762218f1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.3.1"
|
||||
universal_io:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1196,10 +1323,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: win32
|
||||
sha256: "015002c060f1ae9f41a818f2d5640389cc05283e368be19dc8d77cecb43c40c9"
|
||||
sha256: "68d1e89a91ed61ad9c370f9f8b6effed9ae5e0ede22a270bdfa6daf79fc2290a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.5.3"
|
||||
version: "5.5.4"
|
||||
win32_registry:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1208,6 +1335,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.4"
|
||||
wkt_parser:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: wkt_parser
|
||||
sha256: "8a555fc60de3116c00aad67891bcab20f81a958e4219cc106e3c037aa3937f13"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.0"
|
||||
workmanager:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
33
pubspec.yaml
33
pubspec.yaml
|
@ -17,22 +17,18 @@ dependencies:
|
|||
gap: ^3.0.1
|
||||
dio: ^5.5.0+1
|
||||
intl: ^0.19.0
|
||||
isar:
|
||||
version: ^3.1.7
|
||||
hosted: https://pub.isar-community.dev/
|
||||
shimmer: ^3.0.0
|
||||
iconsax: ^0.0.8
|
||||
latlong2: ^0.9.1
|
||||
timezone: ^0.9.4
|
||||
geocoding: ^3.0.0
|
||||
geolocator: ^13.0.1
|
||||
home_widget: ^0.6.0
|
||||
workmanager: ^0.5.2
|
||||
flutter_map: ^7.0.2
|
||||
google_fonts: ^6.2.1
|
||||
url_launcher: ^6.3.0
|
||||
iconsax_plus: ^1.0.0
|
||||
time_machine: ^0.9.17
|
||||
flutter_glow:
|
||||
git:
|
||||
url: https://github.com/payam-zahedi/flutter-glow.git
|
||||
dynamic_color: ^1.7.0
|
||||
path_provider: ^2.1.4
|
||||
# quick_settings: ^1.0.1
|
||||
|
@ -41,17 +37,26 @@ dependencies:
|
|||
device_info_plus: ^10.1.2
|
||||
package_info_plus: ^8.0.2
|
||||
connectivity_plus: ^6.0.5
|
||||
flutter_map_cache: ^1.5.1
|
||||
freezed_annotation: ^2.4.4
|
||||
isar_flutter_libs:
|
||||
version: ^3.1.7
|
||||
hosted: https://pub.isar-community.dev/
|
||||
flutter_displaymode: ^0.6.0
|
||||
lat_lng_to_timezone: ^0.2.0
|
||||
# font_awesome_flutter: ^10.7.0
|
||||
line_awesome_flutter: ^3.0.1
|
||||
dio_cache_interceptor: ^3.5.0
|
||||
flutter_map_animations: ^0.7.0
|
||||
flutter_hsvcolor_picker: ^1.5.1
|
||||
scrollable_positioned_list: ^0.3.8
|
||||
flutter_local_notifications: ^17.2.2
|
||||
material_floating_search_bar_2: ^0.5.0
|
||||
internet_connection_checker_plus: ^2.5.1
|
||||
dio_cache_interceptor_file_store: ^1.2.2
|
||||
flutter_map_cancellable_tile_provider: ^3.0.0
|
||||
isar:
|
||||
version: ^3.1.7
|
||||
hosted: https://pub.isar-community.dev/
|
||||
isar_flutter_libs:
|
||||
version: ^3.1.7
|
||||
hosted: https://pub.isar-community.dev/
|
||||
|
||||
# Uncomment this for publishing FLOSS variant
|
||||
# dependency_overrides:
|
||||
|
@ -67,12 +72,12 @@ dev_dependencies:
|
|||
freezed: ^2.5.7
|
||||
build_runner: ^2.4.12
|
||||
flutter_lints: ^4.0.0
|
||||
isar_generator:
|
||||
version: ^3.1.7
|
||||
hosted: https://pub.isar-community.dev/
|
||||
json_serializable: ^6.8.0
|
||||
flutter_native_splash: ^2.4.1
|
||||
flutter_launcher_icons: ^0.13.1
|
||||
isar_generator:
|
||||
version: ^3.1.7
|
||||
hosted: https://pub.isar-community.dev/
|
||||
|
||||
flutter_launcher_icons:
|
||||
android: true
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue