initial commit v2
33
assets/i18n/de.json
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
|
||||||
|
"page": {
|
||||||
|
"start": {
|
||||||
|
"title": "AmBiTo Toolkit",
|
||||||
|
"links": {
|
||||||
|
"start": {
|
||||||
|
"title": "Start"
|
||||||
|
},
|
||||||
|
"database": {
|
||||||
|
"title": "Datenbank"
|
||||||
|
},
|
||||||
|
"designer": {
|
||||||
|
"title": "Designer"
|
||||||
|
},
|
||||||
|
"service": {
|
||||||
|
"title": "Beratung"
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"title": "Netzwerk"
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"title": "Kontakt"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"actions": {
|
||||||
|
"title": "Recherchieren Sie in allen Biodiversitätsmaßnahmen",
|
||||||
|
"intro": "In dieser Datenbank finden Sie die Maßnahmen, die zu Ihrem Betrieb und Ihrer Region passen."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
BIN
assets/images/actions/ansitzstangen.jpg
Normal file
After Width: | Height: | Size: 332 KiB |
BIN
assets/images/actions/aushebung.jpg
Normal file
After Width: | Height: | Size: 426 KiB |
BIN
assets/images/actions/einzelbaeume.jpg
Normal file
After Width: | Height: | Size: 995 KiB |
BIN
assets/images/actions/gebauede_dachbegruenung.jpg
Normal file
After Width: | Height: | Size: 901 KiB |
BIN
assets/images/actions/hecken.jpg
Normal file
After Width: | Height: | Size: 859 KiB |
BIN
assets/images/actions/insektennisthilfe.jpg
Normal file
After Width: | Height: | Size: 559 KiB |
BIN
assets/images/actions/nist_brut_unterschlupforte.jpg
Normal file
After Width: | Height: | Size: 639 KiB |
BIN
assets/images/actions/pflanzgefaesse.jpg
Normal file
After Width: | Height: | Size: 628 KiB |
BIN
assets/images/actions/saumbegruenung.jpg
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
assets/images/actions/staudenbeete.jpg
Normal file
After Width: | Height: | Size: 776 KiB |
BIN
assets/images/actions/steinhaufen.jpg
Normal file
After Width: | Height: | Size: 799 KiB |
BIN
assets/images/actions/terassengaerten.jpg
Normal file
After Width: | Height: | Size: 706 KiB |
BIN
assets/images/actions/totholz.jpg
Normal file
After Width: | Height: | Size: 629 KiB |
BIN
assets/images/actions/trockenmauern.jpg
Normal file
After Width: | Height: | Size: 810 KiB |
BIN
assets/images/actions/unterstockbegruenung.jpg
Normal file
After Width: | Height: | Size: 653 KiB |
BIN
assets/images/actions/wasserstellen.jpg
Normal file
After Width: | Height: | Size: 909 KiB |
BIN
assets/images/actions/zwickelflaeche.jpg
Normal file
After Width: | Height: | Size: 799 KiB |
BIN
assets/images/logo.png
Normal file
After Width: | Height: | Size: 7.9 KiB |
BIN
assets/images/logo_trans.png
Normal file
After Width: | Height: | Size: 10 KiB |
220
lib/main.dart
|
@ -1,125 +1,163 @@
|
||||||
|
import 'package:ambito/src/domain/entity/baumarten/baumarten.dart';
|
||||||
|
import 'package:ambito/src/domain/entity/massnahme/massnahme.dart';
|
||||||
|
import 'package:ambito/src/packages/ambito_api/base.dart';
|
||||||
|
import 'package:ambito/src/pages/actions/actions_page.dart';
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_i18n/flutter_i18n.dart';
|
||||||
|
import 'package:get/get_navigation/src/root/get_material_app.dart';
|
||||||
|
import 'package:isar/isar.dart';
|
||||||
|
import 'package:logger/logger.dart';
|
||||||
|
|
||||||
void main() {
|
final String AmbitoToken = 'TFxO7vzBLVRCu9I3VMoHmTuCvSu8aCDi';
|
||||||
runApp(const MyApp());
|
|
||||||
|
final Logger logger = Logger(
|
||||||
|
printer: PrettyPrinter(),
|
||||||
|
);
|
||||||
|
|
||||||
|
late Isar isar;
|
||||||
|
|
||||||
|
void main() async {
|
||||||
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
|
|
||||||
|
/*Isar.open(
|
||||||
|
schemas: [BaumartenSchema, IdValueColorSchema, IdValueSchema],
|
||||||
|
directory: '',
|
||||||
|
);*/
|
||||||
|
|
||||||
|
await Isar.initialize();
|
||||||
|
const dir = Isar.sqliteInMemory;
|
||||||
|
const engine = kIsWeb ? IsarEngine.sqlite : IsarEngine.isar;
|
||||||
|
isar = Isar.open(
|
||||||
|
schemas: [BaumartenSchema, MassnahmeSchema],
|
||||||
|
directory: dir,
|
||||||
|
engine: engine,
|
||||||
|
inspector: true,
|
||||||
|
);
|
||||||
|
|
||||||
|
Future.wait([
|
||||||
|
BaseApi().getContent('baumarten'),
|
||||||
|
BaseApi().getContent('massnahmen'),
|
||||||
|
]);
|
||||||
|
|
||||||
|
//await BaseApi().getContent('baumarten');
|
||||||
|
//await BaseApi().getContent('massnahmen');
|
||||||
|
|
||||||
|
runApp(const Ambito());
|
||||||
}
|
}
|
||||||
|
|
||||||
class MyApp extends StatelessWidget {
|
class Ambito extends StatelessWidget {
|
||||||
const MyApp({super.key});
|
const Ambito({super.key});
|
||||||
|
|
||||||
// This widget is the root of your application.
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MaterialApp(
|
return GetMaterialApp(
|
||||||
|
debugShowCheckedModeBanner: false,
|
||||||
|
localizationsDelegates: [
|
||||||
|
FlutterI18nDelegate(
|
||||||
|
translationLoader: FileTranslationLoader(
|
||||||
|
fallbackFile: 'de',
|
||||||
|
basePath: 'i18n',
|
||||||
|
),
|
||||||
|
missingTranslationHandler: (key, locale) {
|
||||||
|
print("--- Missing Key: $key, languageCode: $locale");
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
title: 'Flutter Demo',
|
title: 'Flutter Demo',
|
||||||
|
locale: const Locale('de'),
|
||||||
|
builder: FlutterI18n.rootAppBuilder(),
|
||||||
theme: ThemeData(
|
theme: ThemeData(
|
||||||
// This is the theme of your application.
|
scaffoldBackgroundColor: Colors.white,
|
||||||
//
|
|
||||||
// TRY THIS: Try running your application with "flutter run". You'll see
|
|
||||||
// the application has a purple toolbar. Then, without quitting the app,
|
|
||||||
// try changing the seedColor in the colorScheme below to Colors.green
|
|
||||||
// and then invoke "hot reload" (save your changes or press the "hot
|
|
||||||
// reload" button in a Flutter-supported IDE, or press "r" if you used
|
|
||||||
// the command line to start the app).
|
|
||||||
//
|
|
||||||
// Notice that the counter didn't reset back to zero; the application
|
|
||||||
// state is not lost during the reload. To reset the state, use hot
|
|
||||||
// restart instead.
|
|
||||||
//
|
|
||||||
// This works for code too, not just values: Most code changes can be
|
|
||||||
// tested with just a hot reload.
|
|
||||||
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
|
|
||||||
useMaterial3: true,
|
useMaterial3: true,
|
||||||
),
|
),
|
||||||
home: const MyHomePage(title: 'Flutter Demo Home Page'),
|
home: const MyHomePage(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class MyHomePage extends StatefulWidget {
|
class MyHomePage extends StatefulWidget {
|
||||||
const MyHomePage({super.key, required this.title});
|
const MyHomePage({super.key});
|
||||||
|
|
||||||
// This widget is the home page of your application. It is stateful, meaning
|
|
||||||
// that it has a State object (defined below) that contains fields that affect
|
|
||||||
// how it looks.
|
|
||||||
|
|
||||||
// This class is the configuration for the state. It holds the values (in this
|
|
||||||
// case the title) provided by the parent (in this case the App widget) and
|
|
||||||
// used by the build method of the State. Fields in a Widget subclass are
|
|
||||||
// always marked "final".
|
|
||||||
|
|
||||||
final String title;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<MyHomePage> createState() => _MyHomePageState();
|
State<MyHomePage> createState() => _MyHomePageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _MyHomePageState extends State<MyHomePage> {
|
class _MyHomePageState extends State<MyHomePage> {
|
||||||
int _counter = 0;
|
String activeLink = '';
|
||||||
|
|
||||||
void _incrementCounter() {
|
@override
|
||||||
setState(() {
|
void initState() {
|
||||||
// This call to setState tells the Flutter framework that something has
|
activeLink = 'start';
|
||||||
// changed in this State, which causes it to rerun the build method below
|
super.initState();
|
||||||
// so that the display can reflect the updated values. If we changed
|
|
||||||
// _counter without calling setState(), then the build method would not be
|
|
||||||
// called again, and so nothing would appear to happen.
|
|
||||||
_counter++;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
// This method is rerun every time setState is called, for instance as done
|
double fontSize = 16;
|
||||||
// by the _incrementCounter method above.
|
|
||||||
//
|
|
||||||
// The Flutter framework has been optimized to make rerunning build methods
|
|
||||||
// fast, so that you can just rebuild anything that needs updating rather
|
|
||||||
// than having to individually change instances of widgets.
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
body: Column(
|
||||||
// TRY THIS: Try changing the color here to a specific color (to
|
children: [
|
||||||
// Colors.amber, perhaps?) and trigger a hot reload to see the AppBar
|
SizedBox(height: 50),
|
||||||
// change color while the other colors stay the same.
|
Row(
|
||||||
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
// Here we take the value from the MyHomePage object that was created by
|
children: [
|
||||||
// the App.build method, and use it to set our appbar title.
|
LinkButton('start'),
|
||||||
title: Text(widget.title),
|
LinkButton('database'),
|
||||||
),
|
LinkButton('designer'),
|
||||||
body: Center(
|
Image.asset(
|
||||||
// Center is a layout widget. It takes a single child and positions it
|
'images/logo.png',
|
||||||
// in the middle of the parent.
|
scale: 1.3,
|
||||||
child: Column(
|
|
||||||
// Column is also a layout widget. It takes a list of children and
|
|
||||||
// arranges them vertically. By default, it sizes itself to fit its
|
|
||||||
// children horizontally, and tries to be as tall as its parent.
|
|
||||||
//
|
|
||||||
// Column has various properties to control how it sizes itself and
|
|
||||||
// how it positions its children. Here we use mainAxisAlignment to
|
|
||||||
// center the children vertically; the main axis here is the vertical
|
|
||||||
// axis because Columns are vertical (the cross axis would be
|
|
||||||
// horizontal).
|
|
||||||
//
|
|
||||||
// TRY THIS: Invoke "debug painting" (choose the "Toggle Debug Paint"
|
|
||||||
// action in the IDE, or press "p" in the console), to see the
|
|
||||||
// wireframe for each widget.
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: <Widget>[
|
|
||||||
const Text(
|
|
||||||
'You have pushed the button this many times:',
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
'$_counter',
|
|
||||||
style: Theme.of(context).textTheme.headlineMedium,
|
|
||||||
),
|
),
|
||||||
|
LinkButton('service'),
|
||||||
|
LinkButton('network'),
|
||||||
|
LinkButton('contact'),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
SizedBox(height: 50),
|
||||||
|
Expanded(
|
||||||
|
child: getContent(),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget getContent() {
|
||||||
|
if (activeLink == 'database') {
|
||||||
|
return ActionsPage();
|
||||||
|
}
|
||||||
|
return Text(activeLink);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget LinkButton(String link) {
|
||||||
|
double fontSize = 16;
|
||||||
|
return TextButton(
|
||||||
|
style: ButtonStyle(
|
||||||
|
overlayColor: MaterialStateProperty.resolveWith<Color>(
|
||||||
|
(Set<MaterialState> states) {
|
||||||
|
return Colors.white;
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
onPressed: () {
|
||||||
|
setState(() {
|
||||||
|
activeLink = link;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
child: Text(
|
||||||
|
context.translate('page.start.links.$link.title'),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: fontSize,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
color: (activeLink == link)
|
||||||
|
? Colors.grey.shade400
|
||||||
|
: Colors.grey.shade800,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
floatingActionButton: FloatingActionButton(
|
|
||||||
onPressed: _incrementCounter,
|
|
||||||
tooltip: 'Increment',
|
|
||||||
child: const Icon(Icons.add),
|
|
||||||
), // This trailing comma makes auto-formatting nicer for build methods.
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension ContextI18n on BuildContext {
|
||||||
|
translate(String key) {
|
||||||
|
return FlutterI18n.translate(this, key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
1
lib/src/domain/entity/base_entity.dart
Normal file
|
@ -0,0 +1 @@
|
||||||
|
class BaseEntity {}
|
78
lib/src/domain/entity/baumarten/baumarten.dart
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
import 'package:ambito/src/domain/entity/id_value/id_value.dart';
|
||||||
|
import 'package:ambito/src/domain/entity/id_value_color/id_value_color.dart';
|
||||||
|
import 'package:isar/isar.dart';
|
||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
|
||||||
|
import '../base_entity.dart';
|
||||||
|
|
||||||
|
part 'baumarten.g.dart';
|
||||||
|
|
||||||
|
@JsonSerializable(explicitToJson: true)
|
||||||
|
@collection
|
||||||
|
class Baumarten extends BaseEntity {
|
||||||
|
Baumarten();
|
||||||
|
|
||||||
|
late int id;
|
||||||
|
@JsonKey(name: 'order')
|
||||||
|
String? orderString;
|
||||||
|
@JsonKey(name: 'Art')
|
||||||
|
String? art;
|
||||||
|
@JsonKey(name: 'id 2')
|
||||||
|
String? id2;
|
||||||
|
@JsonKey(name: 'dt. Name')
|
||||||
|
String? name;
|
||||||
|
@JsonKey(name: 'Höhemin')
|
||||||
|
String? minSize;
|
||||||
|
@JsonKey(name: 'Höhemax')
|
||||||
|
String? maxSize;
|
||||||
|
@JsonKey(name: 'Lebensform')
|
||||||
|
List<IdValueColor>? lebensform;
|
||||||
|
@JsonKey(name: 'Wuchs/Krone')
|
||||||
|
List<IdValueColor>? growth;
|
||||||
|
@JsonKey(name: 'KLIMA')
|
||||||
|
List<IdValueColor>? climate;
|
||||||
|
@JsonKey(name: 'Risiko Kirschessigfliege')
|
||||||
|
IdValueColor? riskCherryVinegarFly;
|
||||||
|
@JsonKey(name: 'Wärmeliebend/mild')
|
||||||
|
IdValueColor? thermophilic;
|
||||||
|
@JsonKey(name: 'Frosthart')
|
||||||
|
IdValueColor? frost;
|
||||||
|
@JsonKey(name: 'Spätfrost')
|
||||||
|
IdValueColor? latefrost;
|
||||||
|
@JsonKey(name: 'Dürre')
|
||||||
|
IdValueColor? drought;
|
||||||
|
@JsonKey(name: 'Bodenwasser')
|
||||||
|
String? waterlevel;
|
||||||
|
@JsonKey(name: 'Bodenfeuchte')
|
||||||
|
List<IdValueColor>? humidity;
|
||||||
|
String? Lichtzahl;
|
||||||
|
String? Temperaturzahl;
|
||||||
|
String? Feuchtezahl;
|
||||||
|
String? Reaktionszahl;
|
||||||
|
String? Stickstoffzahl;
|
||||||
|
List<IdValueColor>? Region;
|
||||||
|
String? Anmerkung;
|
||||||
|
@JsonKey(name: "Wild/Kulturart")
|
||||||
|
String? typeOfCulture;
|
||||||
|
@JsonKey(name: 'Gebiet 1')
|
||||||
|
String? region1;
|
||||||
|
@JsonKey(name: 'Gebiet 2')
|
||||||
|
String? region2;
|
||||||
|
@JsonKey(name: 'Gebiet 3')
|
||||||
|
String? region3;
|
||||||
|
@JsonKey(name: 'Gebiet 4')
|
||||||
|
String? region4;
|
||||||
|
@JsonKey(name: 'Gebiet 5')
|
||||||
|
String? region5;
|
||||||
|
@JsonKey(name: 'Gebiet 6')
|
||||||
|
String? region6;
|
||||||
|
@JsonKey(name: '00 Maßnahmen_Main')
|
||||||
|
List<IdValue>? actions;
|
||||||
|
@JsonKey(name: 'Heimisch')
|
||||||
|
bool? local;
|
||||||
|
|
||||||
|
factory Baumarten.fromJson(Map<String, dynamic> json) =>
|
||||||
|
_$BaumartenFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$BaumartenToJson(this);
|
||||||
|
}
|
7142
lib/src/domain/entity/baumarten/baumarten.g.dart
Normal file
27
lib/src/domain/entity/file/file_part.dart
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
import 'package:ambito/src/domain/entity/file/thumbnails.dart';
|
||||||
|
import 'package:isar/isar.dart';
|
||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
|
||||||
|
part 'file_part.g.dart';
|
||||||
|
|
||||||
|
@JsonSerializable(explicitToJson: true)
|
||||||
|
@embedded
|
||||||
|
class FilePart {
|
||||||
|
FilePart();
|
||||||
|
|
||||||
|
String? url;
|
||||||
|
Thumbnails? thumbnails;
|
||||||
|
String? visible_name;
|
||||||
|
String? name;
|
||||||
|
int? size;
|
||||||
|
String? mime_type;
|
||||||
|
bool? is_image;
|
||||||
|
int? image_width;
|
||||||
|
int? image_height;
|
||||||
|
String? uploaded_at;
|
||||||
|
|
||||||
|
factory FilePart.fromJson(Map<String, dynamic> json) =>
|
||||||
|
_$FilePartFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$FilePartToJson(this);
|
||||||
|
}
|
1488
lib/src/domain/entity/file/file_part.g.dart
Normal file
19
lib/src/domain/entity/file/thumbnail.dart
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
import 'package:isar/isar.dart';
|
||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
|
||||||
|
part 'thumbnail.g.dart';
|
||||||
|
|
||||||
|
@JsonSerializable(explicitToJson: true)
|
||||||
|
@embedded
|
||||||
|
class Thumbnail {
|
||||||
|
Thumbnail();
|
||||||
|
|
||||||
|
String? url;
|
||||||
|
int? width;
|
||||||
|
int? height;
|
||||||
|
|
||||||
|
factory Thumbnail.fromJson(Map<String, dynamic> json) =>
|
||||||
|
_$ThumbnailFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$ThumbnailToJson(this);
|
||||||
|
}
|
470
lib/src/domain/entity/file/thumbnail.g.dart
Normal file
|
@ -0,0 +1,470 @@
|
||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'thumbnail.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// _IsarEmbeddedGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
// coverage:ignore-file
|
||||||
|
// ignore_for_file: duplicate_ignore, invalid_use_of_protected_member, lines_longer_than_80_chars, constant_identifier_names, avoid_js_rounded_ints, no_leading_underscores_for_local_identifiers, require_trailing_commas, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_in_if_null_operators, library_private_types_in_public_api, prefer_const_constructors
|
||||||
|
// ignore_for_file: type=lint
|
||||||
|
|
||||||
|
const ThumbnailSchema = IsarGeneratedSchema(
|
||||||
|
schema: IsarSchema(
|
||||||
|
name: 'Thumbnail',
|
||||||
|
embedded: true,
|
||||||
|
properties: [
|
||||||
|
IsarPropertySchema(
|
||||||
|
name: 'url',
|
||||||
|
type: IsarType.string,
|
||||||
|
),
|
||||||
|
IsarPropertySchema(
|
||||||
|
name: 'width',
|
||||||
|
type: IsarType.long,
|
||||||
|
),
|
||||||
|
IsarPropertySchema(
|
||||||
|
name: 'height',
|
||||||
|
type: IsarType.long,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
indexes: [],
|
||||||
|
),
|
||||||
|
converter: IsarObjectConverter<void, Thumbnail>(
|
||||||
|
serialize: serializeThumbnail,
|
||||||
|
deserialize: deserializeThumbnail,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
@isarProtected
|
||||||
|
int serializeThumbnail(IsarWriter writer, Thumbnail object) {
|
||||||
|
{
|
||||||
|
final value = object.url;
|
||||||
|
if (value == null) {
|
||||||
|
IsarCore.writeNull(writer, 1);
|
||||||
|
} else {
|
||||||
|
IsarCore.writeString(writer, 1, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
IsarCore.writeLong(writer, 2, object.width ?? -9223372036854775808);
|
||||||
|
IsarCore.writeLong(writer, 3, object.height ?? -9223372036854775808);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@isarProtected
|
||||||
|
Thumbnail deserializeThumbnail(IsarReader reader) {
|
||||||
|
final object = Thumbnail();
|
||||||
|
object.url = IsarCore.readString(reader, 1);
|
||||||
|
{
|
||||||
|
final value = IsarCore.readLong(reader, 2);
|
||||||
|
if (value == -9223372036854775808) {
|
||||||
|
object.width = null;
|
||||||
|
} else {
|
||||||
|
object.width = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
final value = IsarCore.readLong(reader, 3);
|
||||||
|
if (value == -9223372036854775808) {
|
||||||
|
object.height = null;
|
||||||
|
} else {
|
||||||
|
object.height = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
|
||||||
|
extension ThumbnailQueryFilter
|
||||||
|
on QueryBuilder<Thumbnail, Thumbnail, QFilterCondition> {
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> urlIsNull() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 1));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> urlIsNotNull() {
|
||||||
|
return QueryBuilder.apply(not(), (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 1));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> urlEqualTo(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
EqualCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> urlGreaterThan(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition>
|
||||||
|
urlGreaterThanOrEqualTo(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterOrEqualCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> urlLessThan(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition>
|
||||||
|
urlLessThanOrEqualTo(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessOrEqualCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> urlBetween(
|
||||||
|
String? lower,
|
||||||
|
String? upper, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
BetweenCondition(
|
||||||
|
property: 1,
|
||||||
|
lower: lower,
|
||||||
|
upper: upper,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> urlStartsWith(
|
||||||
|
String value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
StartsWithCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> urlEndsWith(
|
||||||
|
String value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
EndsWithCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> urlContains(
|
||||||
|
String value,
|
||||||
|
{bool caseSensitive = true}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
ContainsCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> urlMatches(
|
||||||
|
String pattern,
|
||||||
|
{bool caseSensitive = true}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
MatchesCondition(
|
||||||
|
property: 1,
|
||||||
|
wildcard: pattern,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> urlIsEmpty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
const EqualCondition(
|
||||||
|
property: 1,
|
||||||
|
value: '',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> urlIsNotEmpty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
const GreaterCondition(
|
||||||
|
property: 1,
|
||||||
|
value: '',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> widthIsNull() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 2));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> widthIsNotNull() {
|
||||||
|
return QueryBuilder.apply(not(), (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 2));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> widthEqualTo(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
EqualCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> widthGreaterThan(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition>
|
||||||
|
widthGreaterThanOrEqualTo(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterOrEqualCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> widthLessThan(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition>
|
||||||
|
widthLessThanOrEqualTo(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessOrEqualCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> widthBetween(
|
||||||
|
int? lower,
|
||||||
|
int? upper,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
BetweenCondition(
|
||||||
|
property: 2,
|
||||||
|
lower: lower,
|
||||||
|
upper: upper,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> heightIsNull() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 3));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> heightIsNotNull() {
|
||||||
|
return QueryBuilder.apply(not(), (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 3));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> heightEqualTo(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
EqualCondition(
|
||||||
|
property: 3,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> heightGreaterThan(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterCondition(
|
||||||
|
property: 3,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition>
|
||||||
|
heightGreaterThanOrEqualTo(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterOrEqualCondition(
|
||||||
|
property: 3,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> heightLessThan(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessCondition(
|
||||||
|
property: 3,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition>
|
||||||
|
heightLessThanOrEqualTo(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessOrEqualCondition(
|
||||||
|
property: 3,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnail, Thumbnail, QAfterFilterCondition> heightBetween(
|
||||||
|
int? lower,
|
||||||
|
int? upper,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
BetweenCondition(
|
||||||
|
property: 3,
|
||||||
|
lower: lower,
|
||||||
|
upper: upper,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension ThumbnailQueryObject
|
||||||
|
on QueryBuilder<Thumbnail, Thumbnail, QFilterCondition> {}
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// JsonSerializableGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
Thumbnail _$ThumbnailFromJson(Map<String, dynamic> json) => Thumbnail()
|
||||||
|
..url = json['url'] as String?
|
||||||
|
..width = (json['width'] as num?)?.toInt()
|
||||||
|
..height = (json['height'] as num?)?.toInt();
|
||||||
|
|
||||||
|
Map<String, dynamic> _$ThumbnailToJson(Thumbnail instance) => <String, dynamic>{
|
||||||
|
'url': instance.url,
|
||||||
|
'width': instance.width,
|
||||||
|
'height': instance.height,
|
||||||
|
};
|
20
lib/src/domain/entity/file/thumbnails.dart
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
import 'package:ambito/src/domain/entity/file/thumbnail.dart';
|
||||||
|
import 'package:isar/isar.dart';
|
||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
|
||||||
|
part 'thumbnails.g.dart';
|
||||||
|
|
||||||
|
@JsonSerializable(explicitToJson: true)
|
||||||
|
@embedded
|
||||||
|
class Thumbnails {
|
||||||
|
Thumbnails();
|
||||||
|
|
||||||
|
Thumbnail? tiny;
|
||||||
|
Thumbnail? small;
|
||||||
|
Thumbnail? card_cover;
|
||||||
|
|
||||||
|
factory Thumbnails.fromJson(Map<String, dynamic> json) =>
|
||||||
|
_$ThumbnailsFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$ThumbnailsToJson(this);
|
||||||
|
}
|
198
lib/src/domain/entity/file/thumbnails.g.dart
Normal file
|
@ -0,0 +1,198 @@
|
||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'thumbnails.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// _IsarEmbeddedGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
// coverage:ignore-file
|
||||||
|
// ignore_for_file: duplicate_ignore, invalid_use_of_protected_member, lines_longer_than_80_chars, constant_identifier_names, avoid_js_rounded_ints, no_leading_underscores_for_local_identifiers, require_trailing_commas, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_in_if_null_operators, library_private_types_in_public_api, prefer_const_constructors
|
||||||
|
// ignore_for_file: type=lint
|
||||||
|
|
||||||
|
const ThumbnailsSchema = IsarGeneratedSchema(
|
||||||
|
schema: IsarSchema(
|
||||||
|
name: 'Thumbnails',
|
||||||
|
embedded: true,
|
||||||
|
properties: [
|
||||||
|
IsarPropertySchema(
|
||||||
|
name: 'tiny',
|
||||||
|
type: IsarType.object,
|
||||||
|
target: 'Thumbnail',
|
||||||
|
),
|
||||||
|
IsarPropertySchema(
|
||||||
|
name: 'small',
|
||||||
|
type: IsarType.object,
|
||||||
|
target: 'Thumbnail',
|
||||||
|
),
|
||||||
|
IsarPropertySchema(
|
||||||
|
name: 'card_cover',
|
||||||
|
type: IsarType.object,
|
||||||
|
target: 'Thumbnail',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
indexes: [],
|
||||||
|
),
|
||||||
|
converter: IsarObjectConverter<void, Thumbnails>(
|
||||||
|
serialize: serializeThumbnails,
|
||||||
|
deserialize: deserializeThumbnails,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
@isarProtected
|
||||||
|
int serializeThumbnails(IsarWriter writer, Thumbnails object) {
|
||||||
|
{
|
||||||
|
final value = object.tiny;
|
||||||
|
if (value == null) {
|
||||||
|
IsarCore.writeNull(writer, 1);
|
||||||
|
} else {
|
||||||
|
final objectWriter = IsarCore.beginObject(writer, 1);
|
||||||
|
serializeThumbnail(objectWriter, value);
|
||||||
|
IsarCore.endObject(writer, objectWriter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
final value = object.small;
|
||||||
|
if (value == null) {
|
||||||
|
IsarCore.writeNull(writer, 2);
|
||||||
|
} else {
|
||||||
|
final objectWriter = IsarCore.beginObject(writer, 2);
|
||||||
|
serializeThumbnail(objectWriter, value);
|
||||||
|
IsarCore.endObject(writer, objectWriter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
final value = object.card_cover;
|
||||||
|
if (value == null) {
|
||||||
|
IsarCore.writeNull(writer, 3);
|
||||||
|
} else {
|
||||||
|
final objectWriter = IsarCore.beginObject(writer, 3);
|
||||||
|
serializeThumbnail(objectWriter, value);
|
||||||
|
IsarCore.endObject(writer, objectWriter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@isarProtected
|
||||||
|
Thumbnails deserializeThumbnails(IsarReader reader) {
|
||||||
|
final object = Thumbnails();
|
||||||
|
{
|
||||||
|
final objectReader = IsarCore.readObject(reader, 1);
|
||||||
|
if (objectReader.isNull) {
|
||||||
|
object.tiny = null;
|
||||||
|
} else {
|
||||||
|
final embedded = deserializeThumbnail(objectReader);
|
||||||
|
IsarCore.freeReader(objectReader);
|
||||||
|
object.tiny = embedded;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
final objectReader = IsarCore.readObject(reader, 2);
|
||||||
|
if (objectReader.isNull) {
|
||||||
|
object.small = null;
|
||||||
|
} else {
|
||||||
|
final embedded = deserializeThumbnail(objectReader);
|
||||||
|
IsarCore.freeReader(objectReader);
|
||||||
|
object.small = embedded;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
final objectReader = IsarCore.readObject(reader, 3);
|
||||||
|
if (objectReader.isNull) {
|
||||||
|
object.card_cover = null;
|
||||||
|
} else {
|
||||||
|
final embedded = deserializeThumbnail(objectReader);
|
||||||
|
IsarCore.freeReader(objectReader);
|
||||||
|
object.card_cover = embedded;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
|
||||||
|
extension ThumbnailsQueryFilter
|
||||||
|
on QueryBuilder<Thumbnails, Thumbnails, QFilterCondition> {
|
||||||
|
QueryBuilder<Thumbnails, Thumbnails, QAfterFilterCondition> tinyIsNull() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 1));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnails, Thumbnails, QAfterFilterCondition> tinyIsNotNull() {
|
||||||
|
return QueryBuilder.apply(not(), (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 1));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnails, Thumbnails, QAfterFilterCondition> smallIsNull() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 2));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnails, Thumbnails, QAfterFilterCondition> smallIsNotNull() {
|
||||||
|
return QueryBuilder.apply(not(), (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 2));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnails, Thumbnails, QAfterFilterCondition>
|
||||||
|
card_coverIsNull() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 3));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnails, Thumbnails, QAfterFilterCondition>
|
||||||
|
card_coverIsNotNull() {
|
||||||
|
return QueryBuilder.apply(not(), (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 3));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension ThumbnailsQueryObject
|
||||||
|
on QueryBuilder<Thumbnails, Thumbnails, QFilterCondition> {
|
||||||
|
QueryBuilder<Thumbnails, Thumbnails, QAfterFilterCondition> tiny(
|
||||||
|
FilterQuery<Thumbnail> q) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.object(q, 1);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnails, Thumbnails, QAfterFilterCondition> small(
|
||||||
|
FilterQuery<Thumbnail> q) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.object(q, 2);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Thumbnails, Thumbnails, QAfterFilterCondition> card_cover(
|
||||||
|
FilterQuery<Thumbnail> q) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.object(q, 3);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// JsonSerializableGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
Thumbnails _$ThumbnailsFromJson(Map<String, dynamic> json) => Thumbnails()
|
||||||
|
..tiny = json['tiny'] == null
|
||||||
|
? null
|
||||||
|
: Thumbnail.fromJson(json['tiny'] as Map<String, dynamic>)
|
||||||
|
..small = json['small'] == null
|
||||||
|
? null
|
||||||
|
: Thumbnail.fromJson(json['small'] as Map<String, dynamic>)
|
||||||
|
..card_cover = json['card_cover'] == null
|
||||||
|
? null
|
||||||
|
: Thumbnail.fromJson(json['card_cover'] as Map<String, dynamic>);
|
||||||
|
|
||||||
|
Map<String, dynamic> _$ThumbnailsToJson(Thumbnails instance) =>
|
||||||
|
<String, dynamic>{
|
||||||
|
'tiny': instance.tiny?.toJson(),
|
||||||
|
'small': instance.small?.toJson(),
|
||||||
|
'card_cover': instance.card_cover?.toJson(),
|
||||||
|
};
|
18
lib/src/domain/entity/id_value/id_value.dart
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
import 'package:isar/isar.dart';
|
||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
|
||||||
|
part 'id_value.g.dart';
|
||||||
|
|
||||||
|
@JsonSerializable(explicitToJson: true)
|
||||||
|
@embedded
|
||||||
|
class IdValue {
|
||||||
|
IdValue();
|
||||||
|
|
||||||
|
int? id;
|
||||||
|
String? value;
|
||||||
|
|
||||||
|
factory IdValue.fromJson(Map<String, dynamic> json) =>
|
||||||
|
_$IdValueFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$IdValueToJson(this);
|
||||||
|
}
|
358
lib/src/domain/entity/id_value/id_value.g.dart
Normal file
|
@ -0,0 +1,358 @@
|
||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'id_value.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// _IsarEmbeddedGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
// coverage:ignore-file
|
||||||
|
// ignore_for_file: duplicate_ignore, invalid_use_of_protected_member, lines_longer_than_80_chars, constant_identifier_names, avoid_js_rounded_ints, no_leading_underscores_for_local_identifiers, require_trailing_commas, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_in_if_null_operators, library_private_types_in_public_api, prefer_const_constructors
|
||||||
|
// ignore_for_file: type=lint
|
||||||
|
|
||||||
|
const IdValueSchema = IsarGeneratedSchema(
|
||||||
|
schema: IsarSchema(
|
||||||
|
name: 'IdValue',
|
||||||
|
embedded: true,
|
||||||
|
properties: [
|
||||||
|
IsarPropertySchema(
|
||||||
|
name: 'id',
|
||||||
|
type: IsarType.long,
|
||||||
|
),
|
||||||
|
IsarPropertySchema(
|
||||||
|
name: 'value',
|
||||||
|
type: IsarType.string,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
indexes: [],
|
||||||
|
),
|
||||||
|
converter: IsarObjectConverter<void, IdValue>(
|
||||||
|
serialize: serializeIdValue,
|
||||||
|
deserialize: deserializeIdValue,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
@isarProtected
|
||||||
|
int serializeIdValue(IsarWriter writer, IdValue object) {
|
||||||
|
IsarCore.writeLong(writer, 1, object.id ?? -9223372036854775808);
|
||||||
|
{
|
||||||
|
final value = object.value;
|
||||||
|
if (value == null) {
|
||||||
|
IsarCore.writeNull(writer, 2);
|
||||||
|
} else {
|
||||||
|
IsarCore.writeString(writer, 2, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@isarProtected
|
||||||
|
IdValue deserializeIdValue(IsarReader reader) {
|
||||||
|
final object = IdValue();
|
||||||
|
{
|
||||||
|
final value = IsarCore.readLong(reader, 1);
|
||||||
|
if (value == -9223372036854775808) {
|
||||||
|
object.id = null;
|
||||||
|
} else {
|
||||||
|
object.id = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
object.value = IsarCore.readString(reader, 2);
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
|
||||||
|
extension IdValueQueryFilter
|
||||||
|
on QueryBuilder<IdValue, IdValue, QFilterCondition> {
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> idIsNull() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 1));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> idIsNotNull() {
|
||||||
|
return QueryBuilder.apply(not(), (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 1));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> idEqualTo(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
EqualCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> idGreaterThan(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> idGreaterThanOrEqualTo(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterOrEqualCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> idLessThan(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> idLessThanOrEqualTo(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessOrEqualCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> idBetween(
|
||||||
|
int? lower,
|
||||||
|
int? upper,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
BetweenCondition(
|
||||||
|
property: 1,
|
||||||
|
lower: lower,
|
||||||
|
upper: upper,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> valueIsNull() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 2));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> valueIsNotNull() {
|
||||||
|
return QueryBuilder.apply(not(), (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 2));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> valueEqualTo(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
EqualCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> valueGreaterThan(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition>
|
||||||
|
valueGreaterThanOrEqualTo(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterOrEqualCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> valueLessThan(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> valueLessThanOrEqualTo(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessOrEqualCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> valueBetween(
|
||||||
|
String? lower,
|
||||||
|
String? upper, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
BetweenCondition(
|
||||||
|
property: 2,
|
||||||
|
lower: lower,
|
||||||
|
upper: upper,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> valueStartsWith(
|
||||||
|
String value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
StartsWithCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> valueEndsWith(
|
||||||
|
String value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
EndsWithCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> valueContains(
|
||||||
|
String value,
|
||||||
|
{bool caseSensitive = true}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
ContainsCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> valueMatches(
|
||||||
|
String pattern,
|
||||||
|
{bool caseSensitive = true}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
MatchesCondition(
|
||||||
|
property: 2,
|
||||||
|
wildcard: pattern,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> valueIsEmpty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
const EqualCondition(
|
||||||
|
property: 2,
|
||||||
|
value: '',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValue, IdValue, QAfterFilterCondition> valueIsNotEmpty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
const GreaterCondition(
|
||||||
|
property: 2,
|
||||||
|
value: '',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension IdValueQueryObject
|
||||||
|
on QueryBuilder<IdValue, IdValue, QFilterCondition> {}
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// JsonSerializableGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
IdValue _$IdValueFromJson(Map<String, dynamic> json) => IdValue()
|
||||||
|
..id = (json['id'] as num?)?.toInt()
|
||||||
|
..value = json['value'] as String?;
|
||||||
|
|
||||||
|
Map<String, dynamic> _$IdValueToJson(IdValue instance) => <String, dynamic>{
|
||||||
|
'id': instance.id,
|
||||||
|
'value': instance.value,
|
||||||
|
};
|
19
lib/src/domain/entity/id_value_color/id_value_color.dart
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
import 'package:isar/isar.dart';
|
||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
|
||||||
|
part 'id_value_color.g.dart';
|
||||||
|
|
||||||
|
@JsonSerializable(explicitToJson: true)
|
||||||
|
@embedded
|
||||||
|
class IdValueColor {
|
||||||
|
IdValueColor();
|
||||||
|
|
||||||
|
int? id;
|
||||||
|
String? value;
|
||||||
|
String? color;
|
||||||
|
|
||||||
|
factory IdValueColor.fromJson(Map<String, dynamic> json) =>
|
||||||
|
_$IdValueColorFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$IdValueColorToJson(this);
|
||||||
|
}
|
576
lib/src/domain/entity/id_value_color/id_value_color.g.dart
Normal file
|
@ -0,0 +1,576 @@
|
||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'id_value_color.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// _IsarEmbeddedGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
// coverage:ignore-file
|
||||||
|
// ignore_for_file: duplicate_ignore, invalid_use_of_protected_member, lines_longer_than_80_chars, constant_identifier_names, avoid_js_rounded_ints, no_leading_underscores_for_local_identifiers, require_trailing_commas, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_in_if_null_operators, library_private_types_in_public_api, prefer_const_constructors
|
||||||
|
// ignore_for_file: type=lint
|
||||||
|
|
||||||
|
const IdValueColorSchema = IsarGeneratedSchema(
|
||||||
|
schema: IsarSchema(
|
||||||
|
name: 'IdValueColor',
|
||||||
|
embedded: true,
|
||||||
|
properties: [
|
||||||
|
IsarPropertySchema(
|
||||||
|
name: 'id',
|
||||||
|
type: IsarType.long,
|
||||||
|
),
|
||||||
|
IsarPropertySchema(
|
||||||
|
name: 'value',
|
||||||
|
type: IsarType.string,
|
||||||
|
),
|
||||||
|
IsarPropertySchema(
|
||||||
|
name: 'color',
|
||||||
|
type: IsarType.string,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
indexes: [],
|
||||||
|
),
|
||||||
|
converter: IsarObjectConverter<void, IdValueColor>(
|
||||||
|
serialize: serializeIdValueColor,
|
||||||
|
deserialize: deserializeIdValueColor,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
@isarProtected
|
||||||
|
int serializeIdValueColor(IsarWriter writer, IdValueColor object) {
|
||||||
|
IsarCore.writeLong(writer, 1, object.id ?? -9223372036854775808);
|
||||||
|
{
|
||||||
|
final value = object.value;
|
||||||
|
if (value == null) {
|
||||||
|
IsarCore.writeNull(writer, 2);
|
||||||
|
} else {
|
||||||
|
IsarCore.writeString(writer, 2, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
final value = object.color;
|
||||||
|
if (value == null) {
|
||||||
|
IsarCore.writeNull(writer, 3);
|
||||||
|
} else {
|
||||||
|
IsarCore.writeString(writer, 3, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@isarProtected
|
||||||
|
IdValueColor deserializeIdValueColor(IsarReader reader) {
|
||||||
|
final object = IdValueColor();
|
||||||
|
{
|
||||||
|
final value = IsarCore.readLong(reader, 1);
|
||||||
|
if (value == -9223372036854775808) {
|
||||||
|
object.id = null;
|
||||||
|
} else {
|
||||||
|
object.id = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
object.value = IsarCore.readString(reader, 2);
|
||||||
|
object.color = IsarCore.readString(reader, 3);
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
|
||||||
|
extension IdValueColorQueryFilter
|
||||||
|
on QueryBuilder<IdValueColor, IdValueColor, QFilterCondition> {
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition> idIsNull() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 1));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition>
|
||||||
|
idIsNotNull() {
|
||||||
|
return QueryBuilder.apply(not(), (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 1));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition> idEqualTo(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
EqualCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition> idGreaterThan(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition>
|
||||||
|
idGreaterThanOrEqualTo(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterOrEqualCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition> idLessThan(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition>
|
||||||
|
idLessThanOrEqualTo(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessOrEqualCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition> idBetween(
|
||||||
|
int? lower,
|
||||||
|
int? upper,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
BetweenCondition(
|
||||||
|
property: 1,
|
||||||
|
lower: lower,
|
||||||
|
upper: upper,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition>
|
||||||
|
valueIsNull() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 2));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition>
|
||||||
|
valueIsNotNull() {
|
||||||
|
return QueryBuilder.apply(not(), (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 2));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition> valueEqualTo(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
EqualCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition>
|
||||||
|
valueGreaterThan(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition>
|
||||||
|
valueGreaterThanOrEqualTo(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterOrEqualCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition> valueLessThan(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition>
|
||||||
|
valueLessThanOrEqualTo(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessOrEqualCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition> valueBetween(
|
||||||
|
String? lower,
|
||||||
|
String? upper, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
BetweenCondition(
|
||||||
|
property: 2,
|
||||||
|
lower: lower,
|
||||||
|
upper: upper,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition>
|
||||||
|
valueStartsWith(
|
||||||
|
String value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
StartsWithCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition> valueEndsWith(
|
||||||
|
String value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
EndsWithCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition> valueContains(
|
||||||
|
String value,
|
||||||
|
{bool caseSensitive = true}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
ContainsCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition> valueMatches(
|
||||||
|
String pattern,
|
||||||
|
{bool caseSensitive = true}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
MatchesCondition(
|
||||||
|
property: 2,
|
||||||
|
wildcard: pattern,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition>
|
||||||
|
valueIsEmpty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
const EqualCondition(
|
||||||
|
property: 2,
|
||||||
|
value: '',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition>
|
||||||
|
valueIsNotEmpty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
const GreaterCondition(
|
||||||
|
property: 2,
|
||||||
|
value: '',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition>
|
||||||
|
colorIsNull() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 3));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition>
|
||||||
|
colorIsNotNull() {
|
||||||
|
return QueryBuilder.apply(not(), (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 3));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition> colorEqualTo(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
EqualCondition(
|
||||||
|
property: 3,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition>
|
||||||
|
colorGreaterThan(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterCondition(
|
||||||
|
property: 3,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition>
|
||||||
|
colorGreaterThanOrEqualTo(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterOrEqualCondition(
|
||||||
|
property: 3,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition> colorLessThan(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessCondition(
|
||||||
|
property: 3,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition>
|
||||||
|
colorLessThanOrEqualTo(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessOrEqualCondition(
|
||||||
|
property: 3,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition> colorBetween(
|
||||||
|
String? lower,
|
||||||
|
String? upper, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
BetweenCondition(
|
||||||
|
property: 3,
|
||||||
|
lower: lower,
|
||||||
|
upper: upper,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition>
|
||||||
|
colorStartsWith(
|
||||||
|
String value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
StartsWithCondition(
|
||||||
|
property: 3,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition> colorEndsWith(
|
||||||
|
String value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
EndsWithCondition(
|
||||||
|
property: 3,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition> colorContains(
|
||||||
|
String value,
|
||||||
|
{bool caseSensitive = true}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
ContainsCondition(
|
||||||
|
property: 3,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition> colorMatches(
|
||||||
|
String pattern,
|
||||||
|
{bool caseSensitive = true}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
MatchesCondition(
|
||||||
|
property: 3,
|
||||||
|
wildcard: pattern,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition>
|
||||||
|
colorIsEmpty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
const EqualCondition(
|
||||||
|
property: 3,
|
||||||
|
value: '',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueColor, IdValueColor, QAfterFilterCondition>
|
||||||
|
colorIsNotEmpty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
const GreaterCondition(
|
||||||
|
property: 3,
|
||||||
|
value: '',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension IdValueColorQueryObject
|
||||||
|
on QueryBuilder<IdValueColor, IdValueColor, QFilterCondition> {}
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// JsonSerializableGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
IdValueColor _$IdValueColorFromJson(Map<String, dynamic> json) => IdValueColor()
|
||||||
|
..id = (json['id'] as num?)?.toInt()
|
||||||
|
..value = json['value'] as String?
|
||||||
|
..color = json['color'] as String?;
|
||||||
|
|
||||||
|
Map<String, dynamic> _$IdValueColorToJson(IdValueColor instance) =>
|
||||||
|
<String, dynamic>{
|
||||||
|
'id': instance.id,
|
||||||
|
'value': instance.value,
|
||||||
|
'color': instance.color,
|
||||||
|
};
|
19
lib/src/domain/entity/id_value_mix/id_value_mix.dart
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
import 'package:ambito/src/domain/entity/id_value_color/id_value_color.dart';
|
||||||
|
import 'package:isar/isar.dart';
|
||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
|
||||||
|
part 'id_value_mix.g.dart';
|
||||||
|
|
||||||
|
@JsonSerializable(explicitToJson: true)
|
||||||
|
@embedded
|
||||||
|
class IdValueMix {
|
||||||
|
IdValueMix();
|
||||||
|
|
||||||
|
int? id;
|
||||||
|
IdValueColor? value;
|
||||||
|
|
||||||
|
factory IdValueMix.fromJson(Map<String, dynamic> json) =>
|
||||||
|
_$IdValueMixFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$IdValueMixToJson(this);
|
||||||
|
}
|
209
lib/src/domain/entity/id_value_mix/id_value_mix.g.dart
Normal file
|
@ -0,0 +1,209 @@
|
||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'id_value_mix.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// _IsarEmbeddedGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
// coverage:ignore-file
|
||||||
|
// ignore_for_file: duplicate_ignore, invalid_use_of_protected_member, lines_longer_than_80_chars, constant_identifier_names, avoid_js_rounded_ints, no_leading_underscores_for_local_identifiers, require_trailing_commas, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_in_if_null_operators, library_private_types_in_public_api, prefer_const_constructors
|
||||||
|
// ignore_for_file: type=lint
|
||||||
|
|
||||||
|
const IdValueMixSchema = IsarGeneratedSchema(
|
||||||
|
schema: IsarSchema(
|
||||||
|
name: 'IdValueMix',
|
||||||
|
embedded: true,
|
||||||
|
properties: [
|
||||||
|
IsarPropertySchema(
|
||||||
|
name: 'id',
|
||||||
|
type: IsarType.long,
|
||||||
|
),
|
||||||
|
IsarPropertySchema(
|
||||||
|
name: 'value',
|
||||||
|
type: IsarType.object,
|
||||||
|
target: 'IdValueColor',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
indexes: [],
|
||||||
|
),
|
||||||
|
converter: IsarObjectConverter<void, IdValueMix>(
|
||||||
|
serialize: serializeIdValueMix,
|
||||||
|
deserialize: deserializeIdValueMix,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
@isarProtected
|
||||||
|
int serializeIdValueMix(IsarWriter writer, IdValueMix object) {
|
||||||
|
IsarCore.writeLong(writer, 1, object.id ?? -9223372036854775808);
|
||||||
|
{
|
||||||
|
final value = object.value;
|
||||||
|
if (value == null) {
|
||||||
|
IsarCore.writeNull(writer, 2);
|
||||||
|
} else {
|
||||||
|
final objectWriter = IsarCore.beginObject(writer, 2);
|
||||||
|
serializeIdValueColor(objectWriter, value);
|
||||||
|
IsarCore.endObject(writer, objectWriter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@isarProtected
|
||||||
|
IdValueMix deserializeIdValueMix(IsarReader reader) {
|
||||||
|
final object = IdValueMix();
|
||||||
|
{
|
||||||
|
final value = IsarCore.readLong(reader, 1);
|
||||||
|
if (value == -9223372036854775808) {
|
||||||
|
object.id = null;
|
||||||
|
} else {
|
||||||
|
object.id = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
final objectReader = IsarCore.readObject(reader, 2);
|
||||||
|
if (objectReader.isNull) {
|
||||||
|
object.value = null;
|
||||||
|
} else {
|
||||||
|
final embedded = deserializeIdValueColor(objectReader);
|
||||||
|
IsarCore.freeReader(objectReader);
|
||||||
|
object.value = embedded;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
|
||||||
|
extension IdValueMixQueryFilter
|
||||||
|
on QueryBuilder<IdValueMix, IdValueMix, QFilterCondition> {
|
||||||
|
QueryBuilder<IdValueMix, IdValueMix, QAfterFilterCondition> idIsNull() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 1));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueMix, IdValueMix, QAfterFilterCondition> idIsNotNull() {
|
||||||
|
return QueryBuilder.apply(not(), (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 1));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueMix, IdValueMix, QAfterFilterCondition> idEqualTo(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
EqualCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueMix, IdValueMix, QAfterFilterCondition> idGreaterThan(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueMix, IdValueMix, QAfterFilterCondition>
|
||||||
|
idGreaterThanOrEqualTo(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterOrEqualCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueMix, IdValueMix, QAfterFilterCondition> idLessThan(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueMix, IdValueMix, QAfterFilterCondition>
|
||||||
|
idLessThanOrEqualTo(
|
||||||
|
int? value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessOrEqualCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueMix, IdValueMix, QAfterFilterCondition> idBetween(
|
||||||
|
int? lower,
|
||||||
|
int? upper,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
BetweenCondition(
|
||||||
|
property: 1,
|
||||||
|
lower: lower,
|
||||||
|
upper: upper,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueMix, IdValueMix, QAfterFilterCondition> valueIsNull() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 2));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<IdValueMix, IdValueMix, QAfterFilterCondition> valueIsNotNull() {
|
||||||
|
return QueryBuilder.apply(not(), (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 2));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension IdValueMixQueryObject
|
||||||
|
on QueryBuilder<IdValueMix, IdValueMix, QFilterCondition> {
|
||||||
|
QueryBuilder<IdValueMix, IdValueMix, QAfterFilterCondition> value(
|
||||||
|
FilterQuery<IdValueColor> q) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.object(q, 2);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// JsonSerializableGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
IdValueMix _$IdValueMixFromJson(Map<String, dynamic> json) => IdValueMix()
|
||||||
|
..id = (json['id'] as num?)?.toInt()
|
||||||
|
..value = json['value'] == null
|
||||||
|
? null
|
||||||
|
: IdValueColor.fromJson(json['value'] as Map<String, dynamic>);
|
||||||
|
|
||||||
|
Map<String, dynamic> _$IdValueMixToJson(IdValueMix instance) =>
|
||||||
|
<String, dynamic>{
|
||||||
|
'id': instance.id,
|
||||||
|
'value': instance.value?.toJson(),
|
||||||
|
};
|
152
lib/src/domain/entity/massnahme/massnahme.dart
Normal file
|
@ -0,0 +1,152 @@
|
||||||
|
import 'package:ambito/src/domain/entity/base_entity.dart';
|
||||||
|
import 'package:ambito/src/domain/entity/id_value/id_value.dart';
|
||||||
|
import 'package:ambito/src/domain/entity/id_value_color/id_value_color.dart';
|
||||||
|
import 'package:isar/isar.dart';
|
||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
|
||||||
|
import '../file/file_part.dart';
|
||||||
|
import '../file/thumbnail.dart';
|
||||||
|
import '../file/thumbnails.dart';
|
||||||
|
import '../id_value_mix/id_value_mix.dart';
|
||||||
|
|
||||||
|
part 'massnahme.g.dart';
|
||||||
|
|
||||||
|
@JsonSerializable(explicitToJson: true)
|
||||||
|
@collection
|
||||||
|
class Massnahme extends BaseEntity {
|
||||||
|
Massnahme();
|
||||||
|
|
||||||
|
late int id;
|
||||||
|
@JsonKey(name: 'order')
|
||||||
|
String? orderString;
|
||||||
|
@JsonKey(name: 'Maßnahmenbezeichung')
|
||||||
|
@Index()
|
||||||
|
String? name;
|
||||||
|
@JsonKey(name: 'Flächentyp Factsheet')
|
||||||
|
List<IdValueColor>? factsheetAreaType;
|
||||||
|
@JsonKey(name: 'Beispielabbildung\\\n(Link)')
|
||||||
|
String? examples;
|
||||||
|
@JsonKey(name: 'Definition Factsheet')
|
||||||
|
String? factsheetDefinition;
|
||||||
|
@JsonKey(name: 'Zielsetzung Factsheet')
|
||||||
|
String? factsheetTarget;
|
||||||
|
@JsonKey(name: 'Wissenschaftlicher Hintergrund redundant')
|
||||||
|
String? scientificBackgroundRedundant;
|
||||||
|
@JsonKey(name: 'Wissenschaftlicher Hintergrund Factsheet')
|
||||||
|
String? factsheetScientificBackground;
|
||||||
|
@JsonKey(name: 'Quellen')
|
||||||
|
String? sources;
|
||||||
|
@JsonKey(name: 'Zeitrahmen Anlage')
|
||||||
|
List<IdValueColor>? timeFrame;
|
||||||
|
@JsonKey(name: 'Beachtenswert - Anlage')
|
||||||
|
String? attachmentReminder;
|
||||||
|
@JsonKey(name: 'Arbeitsschritte Anlage')
|
||||||
|
String? attachmentWorkSteps;
|
||||||
|
@JsonKey(name: "Standort Fact Sheet")
|
||||||
|
String? factsheetLocation;
|
||||||
|
@JsonKey(name: "Größe/Fläche Factsheet")
|
||||||
|
String? factsheetSizeArea;
|
||||||
|
@JsonKey(name: "Genehmigungspflicht redundant")
|
||||||
|
String? redundantAllowance;
|
||||||
|
@JsonKey(name: "Fachgerechte Umsetzung_Anlage_Kosten_Geld")
|
||||||
|
String? moneyAction;
|
||||||
|
@JsonKey(name: "Fachgerechte Umsetzung_Anlage_Kosten_Zeit")
|
||||||
|
String? timeAction;
|
||||||
|
@JsonKey(name: "Dienstleister redundant")
|
||||||
|
String? serviceProvider;
|
||||||
|
@JsonKey(name: "Tipp - Anlage")
|
||||||
|
String? attachmentTip;
|
||||||
|
@JsonKey(name: "Zeitrahmen Pflege")
|
||||||
|
String? timeMaintenance;
|
||||||
|
@JsonKey(name: "Arbeitsschritte Pflege")
|
||||||
|
String? workMaintenance;
|
||||||
|
@JsonKey(name: "Frequenz Pflege")
|
||||||
|
List<IdValueColor>? frequencyMaintenance;
|
||||||
|
@JsonKey(name: "Besonderheiten - Pflege")
|
||||||
|
String? specialsMaintenance;
|
||||||
|
@JsonKey(name: "Maßnahmenkombination (passt gut zu)")
|
||||||
|
String? matchingActions;
|
||||||
|
@JsonKey(name: "Fachexpertise redundant")
|
||||||
|
String? redundantExpertise;
|
||||||
|
@JsonKey(name: "Maßnahmen_geförderte_Organismen")
|
||||||
|
List<IdValue>? organismActions;
|
||||||
|
@JsonKey(name: "Maßnahmengruppe")
|
||||||
|
IdValueColor? actionGroup;
|
||||||
|
@JsonKey(name: "Förderprogramme")
|
||||||
|
List<IdValueColor>? fundingPrograms;
|
||||||
|
@JsonKey(name: "Datei")
|
||||||
|
List<FilePart>? files;
|
||||||
|
@JsonKey(name: "Maßnahmennummer")
|
||||||
|
List<IdValue>? numberOfAction;
|
||||||
|
@JsonKey(name: "Factsheet_Status")
|
||||||
|
List<IdValue>? factsheetStatus;
|
||||||
|
@JsonKey(name: "04 Standortansprüche")
|
||||||
|
List<IdValue>? requiredLocation;
|
||||||
|
@JsonKey(name: "06 Betriebsverzeichnis")
|
||||||
|
List<IdValue>? business;
|
||||||
|
@JsonKey(name: "05 Referenzumsetzung")
|
||||||
|
List<IdValue>? referenceAction;
|
||||||
|
@JsonKey(name: "Material Anlage")
|
||||||
|
List<IdValueColor>? attachmentMaterial;
|
||||||
|
@JsonKey(name: "08 Genehmigungspflicht")
|
||||||
|
List<IdValueColor>? requiredAllowance;
|
||||||
|
@JsonKey(name: "Zeitaufwand Anlage (Minuten)")
|
||||||
|
String? requiredTimeForAction;
|
||||||
|
@JsonKey(name: "Materialkosten")
|
||||||
|
String? costsMaterial;
|
||||||
|
@JsonKey(name: "Fachexpertise Dienstleister")
|
||||||
|
List<IdValueColor>? expertiseWorker;
|
||||||
|
@JsonKey(name: "Fachexpertise Ansprechperson")
|
||||||
|
List<IdValueColor>? expertiseContact;
|
||||||
|
@JsonKey(name: "Arbeitsmittel Anlage")
|
||||||
|
List<IdValueColor>? materialAction;
|
||||||
|
@JsonKey(name: "Zeitrahmen Anlage Zusatz")
|
||||||
|
String? timeframeActionAdditional;
|
||||||
|
@JsonKey(name: "Arbeitsmittel Pflege")
|
||||||
|
List<IdValueColor>? maintenanceMaterial;
|
||||||
|
@JsonKey(name: "12 Quellen")
|
||||||
|
List<IdValue>? sourcesList;
|
||||||
|
@JsonKey(name: "Sonstiges - Voraussetzungen")
|
||||||
|
String? requirements;
|
||||||
|
@JsonKey(name: "Material - Pflege")
|
||||||
|
List<IdValueColor>? materialMaintenance;
|
||||||
|
@JsonKey(name: "Pflege Zeitrahmen Zusatz")
|
||||||
|
String? timeMaintenanceAdditional;
|
||||||
|
@JsonKey(name: "Maßnahmenkombinationen")
|
||||||
|
List<IdValue>? combinedActions;
|
||||||
|
@JsonKey(name: "Bearbeitet")
|
||||||
|
bool? done;
|
||||||
|
@JsonKey(name: "Factsheet vorhanden")
|
||||||
|
List<IdValueMix>? existingFactSheet;
|
||||||
|
@JsonKey(name: "Zeitrahmen Pflege 2")
|
||||||
|
List<IdValueColor>? timeframeMaintenance2;
|
||||||
|
@JsonKey(name: "13 Baumarten")
|
||||||
|
List<IdValueColor>? treeTypes;
|
||||||
|
@JsonKey(name: "Pflege Frequenz Zusatz")
|
||||||
|
String? frequencyMaintenanceAdditional;
|
||||||
|
@JsonKey(name: "Besonderheiten - Anlage")
|
||||||
|
String? specialCreation;
|
||||||
|
@JsonKey(name: "Ökologische Relevanz - Hintergrund")
|
||||||
|
String? oekologischeRelevanzBackground;
|
||||||
|
@JsonKey(name: "Beachtenswert - Vorraussetzungen")
|
||||||
|
String? remarkablePresets;
|
||||||
|
@JsonKey(name: "Beachtenswert .- Pflege")
|
||||||
|
String? remarkableMaintenance;
|
||||||
|
@JsonKey(name: "Tipp - Vorraussetzungen")
|
||||||
|
String? tipsPresets;
|
||||||
|
@JsonKey(name: "Tipp - Pflege")
|
||||||
|
String? tipsMaintenance;
|
||||||
|
@JsonKey(name: "Gut zu wissen - Anlage")
|
||||||
|
String? goodToKnowAttachment;
|
||||||
|
@JsonKey(name: "Hintergrund - Tipps")
|
||||||
|
String? tipsBackground;
|
||||||
|
@JsonKey(name: "Besonderheit - Hintergrund")
|
||||||
|
String? specialBackground;
|
||||||
|
@JsonKey(name: "12 Quellen - Verwendet in Maßnahmendatenblatt")
|
||||||
|
List<IdValue>? sourcesUsedInDataSheet;
|
||||||
|
|
||||||
|
factory Massnahme.fromJson(Map<String, dynamic> json) =>
|
||||||
|
_$MassnahmeFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$MassnahmeToJson(this);
|
||||||
|
}
|
14179
lib/src/domain/entity/massnahme/massnahme.g.dart
Normal file
62
lib/src/packages/ambito_api/base.dart
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:ambito/src/domain/entity/massnahme/massnahme.dart';
|
||||||
|
import 'package:ambito/src/packages/ambito_api/restclient.dart';
|
||||||
|
import 'package:ambito/src/packages/ambito_db/base_db.dart';
|
||||||
|
|
||||||
|
import '../../../main.dart';
|
||||||
|
import '../../domain/entity/baumarten/baumarten.dart';
|
||||||
|
|
||||||
|
Map<String, int> tables = {
|
||||||
|
'massnahmen': 328253,
|
||||||
|
'massnahmenkombination': 328217,
|
||||||
|
'organismen': 328255,
|
||||||
|
'foerderprogramme': 328256,
|
||||||
|
'factsheet': 328273,
|
||||||
|
'standortansprueche': 328188,
|
||||||
|
'referenzumsetzung': 328465,
|
||||||
|
'betriebsverzeichnis': 328472,
|
||||||
|
'erfahrungsbericht': 330802,
|
||||||
|
'genehmigungspflicht': 330806,
|
||||||
|
'dienstleister': 330824,
|
||||||
|
'ansprechperson': 330832,
|
||||||
|
'material': 330836,
|
||||||
|
'quellen': 334231,
|
||||||
|
'baumarten': 342622,
|
||||||
|
'aenderungfactsheet': 330946,
|
||||||
|
};
|
||||||
|
|
||||||
|
class BaseApi {
|
||||||
|
Future<bool> getContent(String table) async {
|
||||||
|
int tableId = tables[table] ?? 0;
|
||||||
|
if (tableId > 0) {
|
||||||
|
var response =
|
||||||
|
await RestClient().get('$tableId/?user_field_names=true&size=200');
|
||||||
|
if (response.statusCode == 200) {
|
||||||
|
var json = jsonDecode(utf8.decode(response.body.runes.toList()));
|
||||||
|
switch (table) {
|
||||||
|
case 'baumarten':
|
||||||
|
for (var baumart in json['results']) {
|
||||||
|
BaseDB.put(Baumarten.fromJson(baumart));
|
||||||
|
Baumarten art = Baumarten.fromJson(baumart);
|
||||||
|
isar.write((isar) {
|
||||||
|
isar.baumartens.put(art);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'massnahmen':
|
||||||
|
for (var massnahme in json['results']) {
|
||||||
|
BaseDB.put(Massnahme.fromJson(massnahme));
|
||||||
|
isar.write((isar) {
|
||||||
|
isar.massnahmes.put(Massnahme.fromJson(massnahme));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
138
lib/src/packages/ambito_api/restclient.dart
Normal file
|
@ -0,0 +1,138 @@
|
||||||
|
library vyc_api;
|
||||||
|
|
||||||
|
import 'dart:async';
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:ambito/main.dart';
|
||||||
|
import 'package:http/http.dart' as http;
|
||||||
|
|
||||||
|
class RestClient {
|
||||||
|
final String baseUrl = 'https://api.baserow.io/api/database/rows/table/';
|
||||||
|
static final http.Client _client = http.Client();
|
||||||
|
|
||||||
|
static const String contentType = "application/json; charset=utf-8";
|
||||||
|
static const String accept = 'application/json; charset=UTF-8';
|
||||||
|
|
||||||
|
RestClient();
|
||||||
|
|
||||||
|
Map<String, String> _getHeaders() {
|
||||||
|
var headers = {
|
||||||
|
"Content-Type": contentType,
|
||||||
|
"Accept": accept,
|
||||||
|
"Authorization": "Token $AmbitoToken",
|
||||||
|
};
|
||||||
|
return headers;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<http.Response> _performRequest(
|
||||||
|
Function request,
|
||||||
|
) async {
|
||||||
|
try {
|
||||||
|
http.Response response = await request();
|
||||||
|
_logResponse(response);
|
||||||
|
return response;
|
||||||
|
} catch (e) {
|
||||||
|
_logError(e);
|
||||||
|
rethrow;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _logResponse(http.Response response) {
|
||||||
|
if (response.statusCode != 200 && response.statusCode != 204) {
|
||||||
|
logger.e('ERROR PERFORMING REQUEST:');
|
||||||
|
logger.e(response.request?.method.toString());
|
||||||
|
logger.e(response.request?.url);
|
||||||
|
logger.e(response.request?.toString());
|
||||||
|
logger.e('REPONSE:');
|
||||||
|
logger.e(response.statusCode);
|
||||||
|
logger.e(response.headers);
|
||||||
|
logger.e(response.body);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _logError(dynamic error) {
|
||||||
|
logger.e(error);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<http.Response> delete(String endpoint) async {
|
||||||
|
final String uriString = '$baseUrl$endpoint';
|
||||||
|
final Uri uri = Uri.parse(uriString);
|
||||||
|
final Map<String, String> headers = _getHeaders();
|
||||||
|
return _performRequest(
|
||||||
|
() {
|
||||||
|
return _client.delete(
|
||||||
|
uri,
|
||||||
|
headers: headers,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<http.Response> get(String endpoint) async {
|
||||||
|
final String uriString = '$baseUrl$endpoint';
|
||||||
|
final Uri uri = Uri.parse(uriString);
|
||||||
|
final Map<String, String> headers = _getHeaders();
|
||||||
|
return _performRequest(
|
||||||
|
() {
|
||||||
|
return _client.get(
|
||||||
|
uri,
|
||||||
|
headers: headers,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<http.Response> post(
|
||||||
|
String endpoint,
|
||||||
|
dynamic body,
|
||||||
|
) async {
|
||||||
|
final String uriString = '$baseUrl$endpoint';
|
||||||
|
final Uri uri = Uri.parse(uriString);
|
||||||
|
final Map<String, String> headers = _getHeaders();
|
||||||
|
return _performRequest(
|
||||||
|
() {
|
||||||
|
return _client.post(
|
||||||
|
uri,
|
||||||
|
body: jsonEncode(body),
|
||||||
|
headers: headers,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<http.Response> put(
|
||||||
|
String endpoint,
|
||||||
|
dynamic body,
|
||||||
|
) async {
|
||||||
|
final String uriString = '$baseUrl$endpoint';
|
||||||
|
final Uri uri = Uri.parse(uriString);
|
||||||
|
final Map<String, String> headers = _getHeaders();
|
||||||
|
return _performRequest(
|
||||||
|
() {
|
||||||
|
return _client.put(
|
||||||
|
uri,
|
||||||
|
body: jsonEncode(body),
|
||||||
|
headers: headers,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<http.Response> patch(
|
||||||
|
String endpoint,
|
||||||
|
dynamic body,
|
||||||
|
) async {
|
||||||
|
final String uriString = '$baseUrl$endpoint';
|
||||||
|
final Uri uri = Uri.parse(uriString);
|
||||||
|
final Map<String, String> headers = _getHeaders();
|
||||||
|
return _performRequest(
|
||||||
|
() {
|
||||||
|
return _client.patch(
|
||||||
|
uri,
|
||||||
|
body: jsonEncode(body),
|
||||||
|
headers: headers,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
31
lib/src/packages/ambito_db/base_db.dart
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
import 'package:ambito/src/domain/entity/baumarten/baumarten.dart';
|
||||||
|
import 'package:ambito/src/domain/entity/massnahme/massnahme.dart';
|
||||||
|
import 'package:isar/isar.dart';
|
||||||
|
|
||||||
|
import '../../../main.dart';
|
||||||
|
|
||||||
|
class BaseDB {
|
||||||
|
static put(var entity) {
|
||||||
|
switch (entity.runtimeType) {
|
||||||
|
case 'Baumarten':
|
||||||
|
isar.write((isar) {
|
||||||
|
isar.baumartens.put(entity);
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 'Massnahme':
|
||||||
|
isar.write((isar) {
|
||||||
|
isar.massnahmes.put(entity);
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static getAll(String type) {
|
||||||
|
switch (type) {
|
||||||
|
case 'Maßnahme':
|
||||||
|
return isar.massnahmes.where().sortByName().findAll();
|
||||||
|
case 'Baumart':
|
||||||
|
return isar.baumartens.where().findAll();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
251
lib/src/pages/actions/actions_page.dart
Normal file
|
@ -0,0 +1,251 @@
|
||||||
|
import 'package:ambito/src/domain/entity/massnahme/massnahme.dart';
|
||||||
|
import 'package:ambito/src/packages/ambito_db/base_db.dart';
|
||||||
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
|
import 'package:expandable_text/expandable_text.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import '../../../main.dart';
|
||||||
|
|
||||||
|
class ActionsPage extends StatefulWidget {
|
||||||
|
@override
|
||||||
|
State<StatefulWidget> createState() => ActionsPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class ActionsPageState extends State<ActionsPage> {
|
||||||
|
final GlobalKey<FormFieldState> _keyType = GlobalKey<FormFieldState>();
|
||||||
|
final GlobalKey<FormFieldState> _keyAreaType = GlobalKey<FormFieldState>();
|
||||||
|
|
||||||
|
Map<int, bool> visible = {};
|
||||||
|
List<String> effort = [];
|
||||||
|
List<String> effect = [];
|
||||||
|
List<String> type = [];
|
||||||
|
String? filterType;
|
||||||
|
List<String> areaType = [];
|
||||||
|
String? filterAreaType;
|
||||||
|
List<String> region = [];
|
||||||
|
List<String> support = [];
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
effort = [];
|
||||||
|
effect = [];
|
||||||
|
type = [];
|
||||||
|
areaType = [];
|
||||||
|
region = [];
|
||||||
|
support = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
List<Massnahme> massnahmen = BaseDB.getAll('Maßnahme');
|
||||||
|
|
||||||
|
List<Widget> actionCards = [];
|
||||||
|
for (var massnahme in massnahmen) {
|
||||||
|
//logger.d(massnahme.toJson());
|
||||||
|
if (massnahme.actionGroup != null &&
|
||||||
|
!type.contains(massnahme.actionGroup!.value)) {
|
||||||
|
setState(() {
|
||||||
|
type.add(massnahme.actionGroup!.value!);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (massnahme.factsheetAreaType != null) {
|
||||||
|
for (var aType in massnahme.factsheetAreaType!) {
|
||||||
|
if (!areaType.contains(aType.value)) {
|
||||||
|
setState(() {
|
||||||
|
areaType.add(aType.value!);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var massnahme in massnahmen) {
|
||||||
|
bool myVisibility = true;
|
||||||
|
if (filterType != null) {
|
||||||
|
if (massnahme.actionGroup == null ||
|
||||||
|
massnahme.actionGroup!.value != filterType) {
|
||||||
|
myVisibility = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (filterAreaType != null) {
|
||||||
|
if (massnahme.factsheetAreaType != null) {
|
||||||
|
myVisibility = false;
|
||||||
|
for (var aType in massnahme.factsheetAreaType!) {
|
||||||
|
if (aType.value == filterAreaType) {
|
||||||
|
myVisibility = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setState(() {
|
||||||
|
visible[massnahme.id] = myVisibility;
|
||||||
|
});
|
||||||
|
actionCards.add(getCard(context, massnahme));
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.d(visible);
|
||||||
|
//logger.d(areaType);
|
||||||
|
|
||||||
|
return Padding(
|
||||||
|
padding: const EdgeInsets.only(left: 32, right: 32),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
context.translate('page.actions.title'),
|
||||||
|
style: Theme.of(context).textTheme.headlineLarge,
|
||||||
|
),
|
||||||
|
getSpacer(),
|
||||||
|
Text(
|
||||||
|
context.translate('page.actions.intro'),
|
||||||
|
style: Theme.of(context).textTheme.titleLarge,
|
||||||
|
),
|
||||||
|
getSpacer(),
|
||||||
|
getFilter(context),
|
||||||
|
getSpacer(),
|
||||||
|
Expanded(
|
||||||
|
child: SingleChildScrollView(
|
||||||
|
child: Wrap(
|
||||||
|
children: actionCards,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget getSpacer() {
|
||||||
|
return const SizedBox(
|
||||||
|
height: 8,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget getFilter(BuildContext context) {
|
||||||
|
return Row(
|
||||||
|
children: [
|
||||||
|
DropdownMenu(
|
||||||
|
key: _keyAreaType,
|
||||||
|
initialSelection: filterAreaType,
|
||||||
|
leadingIcon: (filterAreaType != null)
|
||||||
|
? IconButton(
|
||||||
|
onPressed: () {
|
||||||
|
_keyAreaType.currentState!.didChange(null);
|
||||||
|
_keyAreaType.currentState!.reset();
|
||||||
|
setState(() {
|
||||||
|
filterAreaType = null;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
icon: const Icon(Icons.delete),
|
||||||
|
)
|
||||||
|
: null,
|
||||||
|
onSelected: (String? selection) {
|
||||||
|
setState(() {
|
||||||
|
filterAreaType = selection;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
dropdownMenuEntries:
|
||||||
|
areaType.map<DropdownMenuEntry<String>>((String entry) {
|
||||||
|
return DropdownMenuEntry<String>(
|
||||||
|
value: entry,
|
||||||
|
label: entry,
|
||||||
|
);
|
||||||
|
}).toList(),
|
||||||
|
),
|
||||||
|
DropdownMenu(
|
||||||
|
key: _keyType,
|
||||||
|
leadingIcon: (filterType != null)
|
||||||
|
? IconButton(
|
||||||
|
onPressed: () {
|
||||||
|
setState(() {
|
||||||
|
filterType = null;
|
||||||
|
});
|
||||||
|
_keyType.currentState!.reset();
|
||||||
|
},
|
||||||
|
icon: const Icon(Icons.delete),
|
||||||
|
)
|
||||||
|
: null,
|
||||||
|
onSelected: (String? selection) {
|
||||||
|
setState(() {
|
||||||
|
filterType = selection;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
dropdownMenuEntries:
|
||||||
|
type.map<DropdownMenuEntry<String>>((String entry) {
|
||||||
|
return DropdownMenuEntry<String>(
|
||||||
|
value: entry,
|
||||||
|
label: entry,
|
||||||
|
);
|
||||||
|
}).toList(),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget getCard(BuildContext context, Massnahme massnahme) {
|
||||||
|
Color background = Colors.white;
|
||||||
|
switch (massnahme.actionGroup?.value) {
|
||||||
|
case 'Baulelemente':
|
||||||
|
background = const Color(0xffFFD269);
|
||||||
|
break;
|
||||||
|
case 'Begrünung':
|
||||||
|
background = const Color(0xff40DD74);
|
||||||
|
break;
|
||||||
|
case 'Bewirtschaftung':
|
||||||
|
background = const Color(0xffBF72ED);
|
||||||
|
break;
|
||||||
|
case 'Nisthilfe':
|
||||||
|
background = const Color(0xffDAE3FD);
|
||||||
|
break;
|
||||||
|
case 'Pflanzung':
|
||||||
|
background = const Color(0xff40D6E9);
|
||||||
|
break;
|
||||||
|
case 'Sondermaßnahmen':
|
||||||
|
background = const Color(0xff689EF1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
var image;
|
||||||
|
if (massnahme.files != null && massnahme.files!.isNotEmpty) {
|
||||||
|
if (massnahme.files![0].thumbnails?.card_cover?.url != null) {
|
||||||
|
image = CachedNetworkImage(
|
||||||
|
imageUrl: massnahme.files![0].thumbnails!.card_cover!.url!,
|
||||||
|
placeholder: (context, url) => const CircularProgressIndicator(),
|
||||||
|
errorWidget: (context, url, error) => const Icon(Icons.error),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Visibility(
|
||||||
|
visible: visible[massnahme.id] ?? false,
|
||||||
|
child: SizedBox(
|
||||||
|
width: 400,
|
||||||
|
child: Card(
|
||||||
|
color: background,
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(32),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
if (image != null) image,
|
||||||
|
const SizedBox(
|
||||||
|
height: 8,
|
||||||
|
),
|
||||||
|
Text(massnahme.name!,
|
||||||
|
style: Theme.of(context).textTheme.headlineSmall),
|
||||||
|
const SizedBox(
|
||||||
|
height: 8,
|
||||||
|
),
|
||||||
|
ExpandableText(
|
||||||
|
massnahme.factsheetDefinition ?? '',
|
||||||
|
maxLines: 3,
|
||||||
|
expandText: 'mehr',
|
||||||
|
collapseText: 'weniger',
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,6 +6,10 @@
|
||||||
|
|
||||||
#include "generated_plugin_registrant.h"
|
#include "generated_plugin_registrant.h"
|
||||||
|
|
||||||
|
#include <isar_flutter_libs/isar_flutter_libs_plugin.h>
|
||||||
|
|
||||||
void fl_register_plugins(FlPluginRegistry* registry) {
|
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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
list(APPEND FLUTTER_PLUGIN_LIST
|
list(APPEND FLUTTER_PLUGIN_LIST
|
||||||
|
isar_flutter_libs
|
||||||
)
|
)
|
||||||
|
|
||||||
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
||||||
|
|
|
@ -5,6 +5,14 @@
|
||||||
import FlutterMacOS
|
import FlutterMacOS
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
|
import geolocator_apple
|
||||||
|
import isar_flutter_libs
|
||||||
|
import path_provider_foundation
|
||||||
|
import sqflite
|
||||||
|
|
||||||
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||||
|
GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin"))
|
||||||
|
IsarFlutterLibsPlugin.register(with: registry.registrar(forPlugin: "IsarFlutterLibsPlugin"))
|
||||||
|
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
||||||
|
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
|
||||||
}
|
}
|
||||||
|
|
953
pubspec.lock
108
pubspec.yaml
|
@ -1,90 +1,52 @@
|
||||||
name: ambito
|
name: ambito
|
||||||
description: "A new Flutter project."
|
description: "..."
|
||||||
# The following line prevents the package from being accidentally published to
|
|
||||||
# pub.dev using `flutter pub publish`. This is preferred for private packages.
|
|
||||||
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
||||||
|
version: 1.0.0+1001
|
||||||
|
|
||||||
# The following defines the version and build number for your application.
|
|
||||||
# A version number is three numbers separated by dots, like 1.2.43
|
|
||||||
# followed by an optional build number separated by a +.
|
|
||||||
# Both the version and the builder number may be overridden in flutter
|
|
||||||
# build by specifying --build-name and --build-number, respectively.
|
|
||||||
# In Android, build-name is used as versionName while build-number used as versionCode.
|
|
||||||
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
|
|
||||||
# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion.
|
|
||||||
# Read more about iOS versioning at
|
|
||||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
|
||||||
# In Windows, build-name is used as the major, minor, and patch parts
|
|
||||||
# of the product and file versions while build-number is used as the build suffix.
|
|
||||||
version: 1.0.0+1
|
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=3.4.4 <4.0.0'
|
sdk: '>=3.4.4 <4.0.0'
|
||||||
|
|
||||||
# Dependencies specify other packages that your package needs in order to work.
|
|
||||||
# To automatically upgrade your package dependencies to the latest versions
|
|
||||||
# consider running `flutter pub upgrade --major-versions`. Alternatively,
|
|
||||||
# dependencies can be manually updated by changing the version numbers below to
|
|
||||||
# the latest version available on pub.dev. To see which dependencies have newer
|
|
||||||
# versions available, run `flutter pub outdated`.
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
|
||||||
|
|
||||||
# The following adds the Cupertino Icons font to your application.
|
|
||||||
# Use with the CupertinoIcons class for iOS style icons.
|
|
||||||
cupertino_icons: ^1.0.6
|
cupertino_icons: ^1.0.6
|
||||||
|
intl: ^0.19.0
|
||||||
|
flutter_map: ^7.0.2
|
||||||
|
latlong2: ^0.9.1
|
||||||
|
flutter_map_location_marker: ^9.1.1
|
||||||
|
flutter_map_cache: ^1.5.1
|
||||||
|
maps_toolkit: ^3.0.0
|
||||||
|
fast_immutable_collections: ^10.2.4
|
||||||
|
badges: ^3.1.2
|
||||||
|
logger: ^2.4.0
|
||||||
|
geolocator: ^13.0.1
|
||||||
|
permission_handler: ^11.3.1
|
||||||
|
flutter_i18n: ^0.36.2
|
||||||
|
isar:
|
||||||
|
version: 4.0.3
|
||||||
|
hosted: https://pub.isar-community.dev/
|
||||||
|
isar_flutter_libs: # contains Isar Core
|
||||||
|
version: 4.0.3
|
||||||
|
hosted: https://pub.isar-community.dev/
|
||||||
|
|
||||||
|
country_flags: ^3.0.0
|
||||||
|
get: ^4.6.6
|
||||||
|
json_serializable: ^6.8.0
|
||||||
|
json_annotation: ^4.9.0
|
||||||
|
expandable_text: ^2.3.0
|
||||||
|
path_provider: ^2.1.4
|
||||||
|
cached_network_image: ^3.4.1
|
||||||
|
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
flutter_lints: ^4.0.0
|
||||||
|
build_runner: any
|
||||||
|
|
||||||
# The "flutter_lints" package below contains a set of recommended lints to
|
|
||||||
# encourage good coding practices. The lint set provided by the package is
|
|
||||||
# activated in the `analysis_options.yaml` file located at the root of your
|
|
||||||
# package. See that file for information about deactivating specific lint
|
|
||||||
# rules and activating additional ones.
|
|
||||||
flutter_lints: ^3.0.0
|
|
||||||
|
|
||||||
# For information on the generic Dart part of this file, see the
|
|
||||||
# following page: https://dart.dev/tools/pub/pubspec
|
|
||||||
|
|
||||||
# The following section is specific to Flutter packages.
|
|
||||||
flutter:
|
flutter:
|
||||||
|
|
||||||
# The following line ensures that the Material Icons font is
|
|
||||||
# included with your application, so that you can use the icons in
|
|
||||||
# the material Icons class.
|
|
||||||
uses-material-design: true
|
uses-material-design: true
|
||||||
|
assets:
|
||||||
# To add assets to your application, add an assets section, like this:
|
- assets/
|
||||||
# assets:
|
- assets/i18n/
|
||||||
# - images/a_dot_burr.jpeg
|
- assets/images/
|
||||||
# - images/a_dot_ham.jpeg
|
|
||||||
|
|
||||||
# An image asset can refer to one or more resolution-specific "variants", see
|
|
||||||
# https://flutter.dev/assets-and-images/#resolution-aware
|
|
||||||
|
|
||||||
# For details regarding adding assets from package dependencies, see
|
|
||||||
# https://flutter.dev/assets-and-images/#from-packages
|
|
||||||
|
|
||||||
# To add custom fonts to your application, add a fonts section here,
|
|
||||||
# in this "flutter" section. Each entry in this list should have a
|
|
||||||
# "family" key with the font family name, and a "fonts" key with a
|
|
||||||
# list giving the asset and other descriptors for the font. For
|
|
||||||
# example:
|
|
||||||
# fonts:
|
|
||||||
# - family: Schyler
|
|
||||||
# fonts:
|
|
||||||
# - asset: fonts/Schyler-Regular.ttf
|
|
||||||
# - asset: fonts/Schyler-Italic.ttf
|
|
||||||
# style: italic
|
|
||||||
# - family: Trajan Pro
|
|
||||||
# fonts:
|
|
||||||
# - asset: fonts/TrajanPro.ttf
|
|
||||||
# - asset: fonts/TrajanPro_Bold.ttf
|
|
||||||
# weight: 700
|
|
||||||
#
|
|
||||||
# For details regarding fonts from package dependencies,
|
|
||||||
# see https://flutter.dev/custom-fonts/#from-packages
|
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
// This is a basic Flutter widget test.
|
|
||||||
//
|
|
||||||
// To perform an interaction with a widget in your test, use the WidgetTester
|
|
||||||
// utility in the flutter_test package. For example, you can send tap and scroll
|
|
||||||
// gestures. You can also use WidgetTester to find child widgets in the widget
|
|
||||||
// tree, read text, and verify that the values of widget properties are correct.
|
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
|
||||||
|
|
||||||
import 'package:ambito/main.dart';
|
|
||||||
|
|
||||||
void main() {
|
|
||||||
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
|
||||||
// Build our app and trigger a frame.
|
|
||||||
await tester.pumpWidget(const MyApp());
|
|
||||||
|
|
||||||
// Verify that our counter starts at 0.
|
|
||||||
expect(find.text('0'), findsOneWidget);
|
|
||||||
expect(find.text('1'), findsNothing);
|
|
||||||
|
|
||||||
// Tap the '+' icon and trigger a frame.
|
|
||||||
await tester.tap(find.byIcon(Icons.add));
|
|
||||||
await tester.pump();
|
|
||||||
|
|
||||||
// Verify that our counter has incremented.
|
|
||||||
expect(find.text('0'), findsNothing);
|
|
||||||
expect(find.text('1'), findsOneWidget);
|
|
||||||
});
|
|
||||||
}
|
|
|
@ -31,8 +31,75 @@
|
||||||
|
|
||||||
<title>ambito</title>
|
<title>ambito</title>
|
||||||
<link rel="manifest" href="manifest.json">
|
<link rel="manifest" href="manifest.json">
|
||||||
|
<style>
|
||||||
|
.loader,.loader:before,.loader:after{
|
||||||
|
top:0;
|
||||||
|
bottom:0;
|
||||||
|
left:0;
|
||||||
|
right:0;
|
||||||
|
content:"";
|
||||||
|
position:absolute;
|
||||||
|
border-radius:50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
body{
|
||||||
|
background-image: url("assets/images/logo_trans.png");
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-attachment: fixed;
|
||||||
|
background-position: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loader{
|
||||||
|
|
||||||
|
position:fixed;
|
||||||
|
width:200px;
|
||||||
|
height:200px;
|
||||||
|
margin:auto;
|
||||||
|
animation:spin 4s linear infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin{
|
||||||
|
100%{transform:rotate(360deg);}
|
||||||
|
}
|
||||||
|
|
||||||
|
.loader:before{
|
||||||
|
border:5px solid #86A34D;
|
||||||
|
border-bottom:5px solid #D4D707;
|
||||||
|
border-left:5px solid #3C683E;
|
||||||
|
animation:spin1 1s linear infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loader:after{
|
||||||
|
border:5px solid #AAC01C;
|
||||||
|
border-top:5px solid transparent;
|
||||||
|
border-right:5px solid transparent;
|
||||||
|
animation:spin2 1s linear infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin1{
|
||||||
|
20%{transform:rotate(150deg)}
|
||||||
|
40%{transform:rotate(300deg)}
|
||||||
|
80%{transform:rotate(300deg)}
|
||||||
|
100%{transform:rotate(360deg)}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin2{
|
||||||
|
0%{transform:rotate(-30deg)}
|
||||||
|
20%{transform:rotate(-30deg);
|
||||||
|
border-color:transparent transparent #AAC01C #AAC01C}
|
||||||
|
21%{border-color:#D4D707 #D4D707 transparent transparent}
|
||||||
|
40%{transform:rotate(-30deg)}
|
||||||
|
60%{transform:rotate(120deg);
|
||||||
|
border-color:#86A34D #86A34D transparent transparent}
|
||||||
|
61%{border-color:transparent transparent #3C683E #3C683E}
|
||||||
|
80%{transform:rotate(270deg)}
|
||||||
|
100%{transform:rotate(330deg);}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
<div class="loader"></div>
|
||||||
|
|
||||||
<script src="flutter_bootstrap.js" async></script>
|
<script src="flutter_bootstrap.js" async></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -6,6 +6,15 @@
|
||||||
|
|
||||||
#include "generated_plugin_registrant.h"
|
#include "generated_plugin_registrant.h"
|
||||||
|
|
||||||
|
#include <geolocator_windows/geolocator_windows.h>
|
||||||
|
#include <isar_flutter_libs/isar_flutter_libs_plugin.h>
|
||||||
|
#include <permission_handler_windows/permission_handler_windows_plugin.h>
|
||||||
|
|
||||||
void RegisterPlugins(flutter::PluginRegistry* registry) {
|
void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||||
|
GeolocatorWindowsRegisterWithRegistrar(
|
||||||
|
registry->GetRegistrarForPlugin("GeolocatorWindows"));
|
||||||
|
IsarFlutterLibsPluginRegisterWithRegistrar(
|
||||||
|
registry->GetRegistrarForPlugin("IsarFlutterLibsPlugin"));
|
||||||
|
PermissionHandlerWindowsPluginRegisterWithRegistrar(
|
||||||
|
registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,9 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
list(APPEND FLUTTER_PLUGIN_LIST
|
list(APPEND FLUTTER_PLUGIN_LIST
|
||||||
|
geolocator_windows
|
||||||
|
isar_flutter_libs
|
||||||
|
permission_handler_windows
|
||||||
)
|
)
|
||||||
|
|
||||||
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
||||||
|
|