theme, locale, settings

This commit is contained in:
Yoshi 2023-01-17 16:20:28 +03:00
parent 4bb78e7810
commit 50d45773b4
16 changed files with 1070 additions and 13 deletions

View file

@ -1,7 +1,10 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.rain">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:label="Rain"
android:label="Rain - Погода"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
<activity
@ -12,10 +15,6 @@
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
@ -25,8 +24,6 @@
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />

0
lib/app/api/api.dart Normal file
View file

10
lib/app/data/weather.dart Normal file
View file

@ -0,0 +1,10 @@
import 'package:isar/isar.dart';
part 'weather.g.dart';
@collection
class Settings {
Id id = Isar.autoIncrement;
bool onboard = false;
bool? theme;
}

376
lib/app/data/weather.g.dart Normal file
View file

@ -0,0 +1,376 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'weather.dart';
// **************************************************************************
// IsarCollectionGenerator
// **************************************************************************
// coverage:ignore-file
// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters
extension GetSettingsCollection on Isar {
IsarCollection<Settings> get settings => this.collection();
}
const SettingsSchema = CollectionSchema(
name: r'Settings',
id: -8656046621518759136,
properties: {
r'onboard': PropertySchema(
id: 0,
name: r'onboard',
type: IsarType.bool,
),
r'theme': PropertySchema(
id: 1,
name: r'theme',
type: IsarType.bool,
)
},
estimateSize: _settingsEstimateSize,
serialize: _settingsSerialize,
deserialize: _settingsDeserialize,
deserializeProp: _settingsDeserializeProp,
idName: r'id',
indexes: {},
links: {},
embeddedSchemas: {},
getId: _settingsGetId,
getLinks: _settingsGetLinks,
attach: _settingsAttach,
version: '3.0.5',
);
int _settingsEstimateSize(
Settings object,
List<int> offsets,
Map<Type, List<int>> allOffsets,
) {
var bytesCount = offsets.last;
return bytesCount;
}
void _settingsSerialize(
Settings object,
IsarWriter writer,
List<int> offsets,
Map<Type, List<int>> allOffsets,
) {
writer.writeBool(offsets[0], object.onboard);
writer.writeBool(offsets[1], object.theme);
}
Settings _settingsDeserialize(
Id id,
IsarReader reader,
List<int> offsets,
Map<Type, List<int>> allOffsets,
) {
final object = Settings();
object.id = id;
object.onboard = reader.readBool(offsets[0]);
object.theme = reader.readBoolOrNull(offsets[1]);
return object;
}
P _settingsDeserializeProp<P>(
IsarReader reader,
int propertyId,
int offset,
Map<Type, List<int>> allOffsets,
) {
switch (propertyId) {
case 0:
return (reader.readBool(offset)) as P;
case 1:
return (reader.readBoolOrNull(offset)) as P;
default:
throw IsarError('Unknown property with id $propertyId');
}
}
Id _settingsGetId(Settings object) {
return object.id;
}
List<IsarLinkBase<dynamic>> _settingsGetLinks(Settings object) {
return [];
}
void _settingsAttach(IsarCollection<dynamic> col, Id id, Settings object) {
object.id = id;
}
extension SettingsQueryWhereSort on QueryBuilder<Settings, Settings, QWhere> {
QueryBuilder<Settings, Settings, QAfterWhere> anyId() {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(const IdWhereClause.any());
});
}
}
extension SettingsQueryWhere on QueryBuilder<Settings, Settings, QWhereClause> {
QueryBuilder<Settings, Settings, QAfterWhereClause> idEqualTo(Id id) {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between(
lower: id,
upper: id,
));
});
}
QueryBuilder<Settings, Settings, QAfterWhereClause> idNotEqualTo(Id id) {
return QueryBuilder.apply(this, (query) {
if (query.whereSort == Sort.asc) {
return query
.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: false),
)
.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: false),
);
} else {
return query
.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: false),
)
.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: false),
);
}
});
}
QueryBuilder<Settings, Settings, QAfterWhereClause> idGreaterThan(Id id,
{bool include = false}) {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: include),
);
});
}
QueryBuilder<Settings, Settings, QAfterWhereClause> idLessThan(Id id,
{bool include = false}) {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: include),
);
});
}
QueryBuilder<Settings, Settings, QAfterWhereClause> idBetween(
Id lowerId,
Id upperId, {
bool includeLower = true,
bool includeUpper = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between(
lower: lowerId,
includeLower: includeLower,
upper: upperId,
includeUpper: includeUpper,
));
});
}
}
extension SettingsQueryFilter
on QueryBuilder<Settings, Settings, QFilterCondition> {
QueryBuilder<Settings, Settings, QAfterFilterCondition> idEqualTo(Id value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'id',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> idGreaterThan(
Id value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan(
include: include,
property: r'id',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> idLessThan(
Id value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan(
include: include,
property: r'id',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> idBetween(
Id lower,
Id upper, {
bool includeLower = true,
bool includeUpper = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between(
property: r'id',
lower: lower,
includeLower: includeLower,
upper: upper,
includeUpper: includeUpper,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> onboardEqualTo(
bool value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'onboard',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> themeIsNull() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNull(
property: r'theme',
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> themeIsNotNull() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNotNull(
property: r'theme',
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> themeEqualTo(
bool? value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'theme',
value: value,
));
});
}
}
extension SettingsQueryObject
on QueryBuilder<Settings, Settings, QFilterCondition> {}
extension SettingsQueryLinks
on QueryBuilder<Settings, Settings, QFilterCondition> {}
extension SettingsQuerySortBy on QueryBuilder<Settings, Settings, QSortBy> {
QueryBuilder<Settings, Settings, QAfterSortBy> sortByOnboard() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'onboard', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByOnboardDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'onboard', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByTheme() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'theme', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByThemeDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'theme', Sort.desc);
});
}
}
extension SettingsQuerySortThenBy
on QueryBuilder<Settings, Settings, QSortThenBy> {
QueryBuilder<Settings, Settings, QAfterSortBy> thenById() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'id', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByIdDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'id', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByOnboard() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'onboard', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByOnboardDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'onboard', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByTheme() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'theme', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByThemeDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'theme', Sort.desc);
});
}
}
extension SettingsQueryWhereDistinct
on QueryBuilder<Settings, Settings, QDistinct> {
QueryBuilder<Settings, Settings, QDistinct> distinctByOnboard() {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'onboard');
});
}
QueryBuilder<Settings, Settings, QDistinct> distinctByTheme() {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'theme');
});
}
}
extension SettingsQueryProperty
on QueryBuilder<Settings, Settings, QQueryProperty> {
QueryBuilder<Settings, int, QQueryOperations> idProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'id');
});
}
QueryBuilder<Settings, bool, QQueryOperations> onboardProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'onboard');
});
}
QueryBuilder<Settings, bool?, QQueryOperations> themeProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'theme');
});
}
}

23
lib/app/modules/home.dart Normal file
View file

@ -0,0 +1,23 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: context.theme.scaffoldBackgroundColor,
body: SafeArea(
child: Column(
children: const [],
),
),
);
}
}

View file

@ -0,0 +1,9 @@
import 'package:get/get.dart';
class Translation extends Translations {
@override
Map<String, Map<String, String>> get keys => {
'ru_RU': {},
'en_US': {},
};
}

View file

@ -1,16 +1,75 @@
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:isar/isar.dart';
import 'package:path_provider/path_provider.dart';
import 'package:rain/app/modules/home.dart';
import 'package:rain/theme/theme.dart';
void main() {
import 'app/data/weather.dart';
import 'l10n/translation.dart';
import 'theme/theme_controller.dart';
late Isar isar;
late Settings settings;
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await isarInit();
runApp(const MyApp());
}
Future<void> isarInit() async {
isar = await Isar.open([
SettingsSchema,
], directory: (await getApplicationSupportDirectory()).path);
settings = await isar.settings.where().findFirst() ?? Settings();
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
final themeController = Get.put(ThemeController());
return ScreenUtilInit(
designSize: const Size(360, 640),
minTextAdapt: true,
splitScreenMode: true,
builder: (context, child) {
return GetMaterialApp(
theme: RainTheme.lightTheme,
darkTheme: RainTheme.darkTheme,
themeMode: themeController.theme,
localizationsDelegates: const [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
translations: Translation(),
locale: Get.deviceLocale,
fallbackLocale: const Locale('en', 'US'),
supportedLocales: const [
Locale('en', 'US'),
Locale('ru', 'RU'),
],
localeResolutionCallback: (locale, supportedLocales) {
for (var supportedLocale in supportedLocales) {
if (supportedLocale.languageCode == locale?.languageCode) {
return supportedLocale;
}
}
return supportedLocales.first;
},
debugShowCheckedModeBanner: false,
home: const HomePage(),
builder: EasyLoading.init(),
);
},
);
}
}

157
lib/theme/theme.dart Normal file
View file

@ -0,0 +1,157 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
final ThemeData baseLigth = ThemeData.light();
final ThemeData baseDark = ThemeData.dark();
class RainTheme {
static ThemeData get lightTheme {
return baseLigth.copyWith(
brightness: Brightness.light,
iconTheme: baseLigth.iconTheme.copyWith(
color: Colors.black,
size: 20.sp,
),
unselectedWidgetColor: Colors.grey[350],
dividerColor: Colors.black,
bottomAppBarColor: const Color.fromARGB(255, 240, 240, 240),
primaryColor: const Color.fromARGB(255, 245, 245, 245),
scaffoldBackgroundColor: Colors.white,
textTheme: baseLigth.textTheme.copyWith(
headline1: TextStyle(
color: Colors.black,
fontSize: 22.sp,
fontWeight: FontWeight.bold,
),
headline2: TextStyle(
color: Colors.black,
fontSize: 20.sp,
fontWeight: FontWeight.bold,
),
headline3: TextStyle(color: Colors.black, fontSize: 18.sp),
headline4: TextStyle(
color: Colors.black,
fontSize: 18.sp,
fontWeight: FontWeight.bold,
),
headline5: TextStyle(
color: Colors.black,
fontSize: 16.sp,
fontWeight: FontWeight.bold,
),
headline6: TextStyle(
color: Colors.black,
fontSize: 16.sp,
),
subtitle1: TextStyle(
color: Colors.grey[800],
fontSize: 16.sp,
fontWeight: FontWeight.bold,
),
subtitle2: TextStyle(
color: Colors.grey[800],
fontSize: 12.sp,
),
),
primaryTextTheme: baseLigth.primaryTextTheme.copyWith(
subtitle1: TextStyle(
color: Colors.grey[600],
fontSize: 14.sp,
),
subtitle2: TextStyle(
color: Colors.grey[600],
fontSize: 14.sp,
fontWeight: FontWeight.bold,
),
headline4: TextStyle(
color: Colors.black,
fontSize: 15.sp,
),
headline5: TextStyle(
color: Colors.black,
fontSize: 17.sp,
),
headline6: TextStyle(
color: Colors.black,
fontSize: 12.sp,
fontWeight: FontWeight.bold,
),
),
);
}
static ThemeData get darkTheme {
return baseDark.copyWith(
brightness: Brightness.dark,
iconTheme: baseDark.iconTheme.copyWith(
color: Colors.white,
size: 20.sp,
),
unselectedWidgetColor: Colors.grey[850],
dividerColor: Colors.white,
primaryColor: const Color.fromARGB(255, 40, 40, 40),
bottomAppBarColor: const Color.fromARGB(255, 28, 28, 28),
scaffoldBackgroundColor: const Color.fromARGB(255, 30, 30, 30),
textTheme: baseDark.textTheme.copyWith(
headline1: TextStyle(
color: Colors.white,
fontSize: 22.sp,
fontWeight: FontWeight.bold,
),
headline2: TextStyle(
color: Colors.white,
fontSize: 20.sp,
fontWeight: FontWeight.bold,
),
headline3: TextStyle(color: Colors.white, fontSize: 18.sp),
headline4: TextStyle(
color: Colors.white,
fontSize: 18.sp,
fontWeight: FontWeight.bold,
),
headline5: TextStyle(
color: Colors.white,
fontSize: 16.sp,
fontWeight: FontWeight.bold,
),
headline6: TextStyle(
color: Colors.white,
fontSize: 16.sp,
),
subtitle1: TextStyle(
color: Colors.grey[300],
fontSize: 16.sp,
fontWeight: FontWeight.bold,
),
subtitle2: TextStyle(
color: Colors.grey[300],
fontSize: 12.sp,
),
),
primaryTextTheme: baseLigth.primaryTextTheme.copyWith(
subtitle1: TextStyle(
color: Colors.grey,
fontSize: 14.sp,
),
subtitle2: TextStyle(
color: Colors.grey,
fontSize: 14.sp,
fontWeight: FontWeight.bold,
),
headline4: TextStyle(
color: Colors.white,
fontSize: 15.sp,
),
headline5: TextStyle(
color: Colors.white,
fontSize: 17.sp,
),
headline6: TextStyle(
color: Colors.white,
fontSize: 12.sp,
fontWeight: FontWeight.bold,
),
),
);
}
}

View file

@ -0,0 +1,21 @@
import 'package:get/get.dart';
import 'package:flutter/material.dart';
import 'package:rain/app/data/weather.dart';
import 'package:rain/main.dart';
class ThemeController extends GetxController {
ThemeMode get theme => settings.theme == null
? ThemeMode.system
: settings.theme == true
? ThemeMode.dark
: ThemeMode.light;
void saveTheme(bool isDarkMode) async {
settings.theme = isDarkMode;
isar.writeTxn(() async => isar.settings.put(settings));
}
void changeTheme(ThemeData theme) => Get.changeTheme(theme);
void changeThemeMode(ThemeMode themeMode) => Get.changeThemeMode(themeMode);
}

View file

@ -6,6 +6,10 @@
#include "generated_plugin_registrant.h"
#include <isar_flutter_libs/isar_flutter_libs_plugin.h>
void fl_register_plugins(FlPluginRegistry* registry) {
g_autoptr(FlPluginRegistrar) isar_flutter_libs_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "IsarFlutterLibsPlugin");
isar_flutter_libs_plugin_register_with_registrar(isar_flutter_libs_registrar);
}

View file

@ -3,6 +3,7 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
isar_flutter_libs
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST

View file

@ -5,6 +5,10 @@
import FlutterMacOS
import Foundation
import isar_flutter_libs
import path_provider_macos
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
IsarFlutterLibsPlugin.register(with: registry.registrar(forPlugin: "IsarFlutterLibsPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
}

View file

@ -1,6 +1,20 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
_fe_analyzer_shared:
dependency: transitive
description:
name: _fe_analyzer_shared
url: "https://pub.dartlang.org"
source: hosted
version: "50.0.0"
analyzer:
dependency: transitive
description:
name: analyzer
url: "https://pub.dartlang.org"
source: hosted
version: "5.2.0"
archive:
dependency: transitive
description:
@ -29,6 +43,62 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
build:
dependency: transitive
description:
name: build
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.1"
build_config:
dependency: transitive
description:
name: build_config
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.1"
build_daemon:
dependency: transitive
description:
name: build_daemon
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.0"
build_resolvers:
dependency: transitive
description:
name: build_resolvers
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
build_runner:
dependency: "direct dev"
description:
name: build_runner
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.3"
build_runner_core:
dependency: transitive
description:
name: build_runner_core
url: "https://pub.dartlang.org"
source: hosted
version: "7.2.7"
built_collection:
dependency: transitive
description:
name: built_collection
url: "https://pub.dartlang.org"
source: hosted
version: "5.1.1"
built_value:
dependency: transitive
description:
name: built_value
url: "https://pub.dartlang.org"
source: hosted
version: "8.4.3"
characters:
dependency: transitive
description:
@ -57,6 +127,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.1"
code_builder:
dependency: transitive
description:
name: code_builder
url: "https://pub.dartlang.org"
source: hosted
version: "4.4.0"
collection:
dependency: transitive
description:
@ -92,6 +169,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.5"
dart_style:
dependency: transitive
description:
name: dart_style
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.4"
dartx:
dependency: transitive
description:
name: dartx
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
dio:
dependency: "direct main"
description:
@ -106,11 +197,39 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.1"
ffi:
dependency: transitive
description:
name: ffi
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
file:
dependency: transitive
description:
name: file
url: "https://pub.dartlang.org"
source: hosted
version: "6.1.4"
fixnum:
dependency: transitive
description:
name: fixnum
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
flutter:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.0"
flutter_easyloading:
dependency: "direct main"
description:
name: flutter_easyloading
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.5"
flutter_launcher_icons:
dependency: "direct dev"
description:
@ -125,6 +244,11 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
flutter_localizations:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.0"
flutter_native_splash:
dependency: "direct dev"
description:
@ -132,6 +256,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.16"
flutter_screenutil:
dependency: "direct main"
description:
name: flutter_screenutil
url: "https://pub.dartlang.org"
source: hosted
version: "5.6.0"
flutter_spinkit:
dependency: transitive
description:
name: flutter_spinkit
url: "https://pub.dartlang.org"
source: hosted
version: "5.1.0"
flutter_test:
dependency: "direct dev"
description: flutter
@ -142,6 +280,13 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
frontend_server_client:
dependency: transitive
description:
name: frontend_server_client
url: "https://pub.dartlang.org"
source: hosted
version: "3.2.0"
get:
dependency: "direct main"
description:
@ -149,6 +294,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "4.6.5"
glob:
dependency: transitive
description:
name: glob
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
graphs:
dependency: transitive
description:
name: graphs
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.0"
html:
dependency: transitive
description:
@ -156,6 +315,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.15.1"
http_multi_server:
dependency: transitive
description:
name: http_multi_server
url: "https://pub.dartlang.org"
source: hosted
version: "3.2.1"
http_parser:
dependency: transitive
description:
@ -183,7 +349,35 @@ packages:
name: intl
url: "https://pub.dartlang.org"
source: hosted
version: "0.18.0"
version: "0.17.0"
io:
dependency: transitive
description:
name: io
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.3"
isar:
dependency: "direct main"
description:
name: isar
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.5"
isar_flutter_libs:
dependency: "direct main"
description:
name: isar_flutter_libs
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.5"
isar_generator:
dependency: "direct dev"
description:
name: isar_generator
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.5"
js:
dependency: transitive
description:
@ -205,6 +399,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
logging:
dependency: transitive
description:
name: logging
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
matcher:
dependency: transitive
description:
@ -226,6 +427,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.0"
mime:
dependency: transitive
description:
name: mime
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.4"
package_config:
dependency: transitive
description:
name: package_config
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
path:
dependency: transitive
description:
@ -233,6 +448,55 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.2"
path_provider:
dependency: "direct main"
description:
name: path_provider
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.11"
path_provider_android:
dependency: transitive
description:
name: path_provider_android
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.22"
path_provider_ios:
dependency: transitive
description:
name: path_provider_ios
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.11"
path_provider_linux:
dependency: transitive
description:
name: path_provider_linux
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.7"
path_provider_macos:
dependency: transitive
description:
name: path_provider_macos
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.7"
path_provider_platform_interface:
dependency: transitive
description:
name: path_provider_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5"
path_provider_windows:
dependency: transitive
description:
name: path_provider_windows
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.3"
petitparser:
dependency: transitive
description:
@ -240,6 +504,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "5.1.0"
platform:
dependency: transitive
description:
name: platform
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.0"
plugin_platform_interface:
dependency: transitive
description:
name: plugin_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.3"
pointycastle:
dependency: transitive
description:
@ -247,6 +525,48 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "3.6.2"
pool:
dependency: transitive
description:
name: pool
url: "https://pub.dartlang.org"
source: hosted
version: "1.5.1"
process:
dependency: transitive
description:
name: process
url: "https://pub.dartlang.org"
source: hosted
version: "4.2.4"
pub_semver:
dependency: transitive
description:
name: pub_semver
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.3"
pubspec_parse:
dependency: transitive
description:
name: pubspec_parse
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.1"
shelf:
dependency: transitive
description:
name: shelf
url: "https://pub.dartlang.org"
source: hosted
version: "1.4.0"
shelf_web_socket:
dependency: transitive
description:
name: shelf_web_socket
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.3"
shimmer:
dependency: "direct main"
description:
@ -259,6 +579,13 @@ packages:
description: flutter
source: sdk
version: "0.0.99"
source_gen:
dependency: transitive
description:
name: source_gen
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.6"
source_span:
dependency: transitive
description:
@ -280,6 +607,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
stream_transform:
dependency: transitive
description:
name: stream_transform
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
string_scanner:
dependency: transitive
description:
@ -301,6 +635,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.12"
time:
dependency: transitive
description:
name: time
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.3"
timing:
dependency: transitive
description:
name: timing
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
typed_data:
dependency: transitive
description:
@ -322,6 +670,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.2"
watcher:
dependency: transitive
description:
name: watcher
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.2"
weather_icons:
dependency: "direct main"
description:
@ -329,6 +684,27 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
web_socket_channel:
dependency: transitive
description:
name: web_socket_channel
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.0"
win32:
dependency: transitive
description:
name: win32
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.3"
xdg_directories:
dependency: transitive
description:
name: xdg_directories
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.0+3"
xml:
dependency: transitive
description:
@ -336,6 +712,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "6.1.0"
xxh3:
dependency: transitive
description:
name: xxh3
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
yaml:
dependency: transitive
description:
@ -345,4 +728,4 @@ packages:
version: "3.1.1"
sdks:
dart: ">=2.18.6 <3.0.0"
flutter: ">=2.5.0"
flutter: ">=3.0.0"

View file

@ -11,18 +11,27 @@ environment:
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
get: ^4.6.5
dio: ^4.0.6
intl: ^0.18.0
isar: ^3.0.5
intl: ^0.17.0
iconsax: ^0.0.8
shimmer: ^2.0.0
weather_icons: ^3.0.0
path_provider: ^2.0.11
cupertino_icons: ^1.0.2
isar_flutter_libs: ^3.0.5
flutter_screenutil: ^5.6.0
flutter_easyloading: ^3.0.5
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.0
build_runner: ^2.3.2
isar_generator: ^3.0.5
flutter_native_splash: ^2.2.16
flutter_launcher_icons: ^0.11.0

View file

@ -6,6 +6,9 @@
#include "generated_plugin_registrant.h"
#include <isar_flutter_libs/isar_flutter_libs_plugin.h>
void RegisterPlugins(flutter::PluginRegistry* registry) {
IsarFlutterLibsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("IsarFlutterLibsPlugin"));
}

View file

@ -3,6 +3,7 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
isar_flutter_libs
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST