feat: GPS and web compatible

This commit is contained in:
2024-04-21 14:21:31 +02:00
parent ad0c8e3124
commit a6f9cfdaf4
25 changed files with 2364 additions and 1069 deletions

View File

@ -1,910 +0,0 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'isar_controller.dart';
// **************************************************************************
// IsarCollectionGenerator
// **************************************************************************
// coverage:ignore-file
// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types
extension GetSettingsCollection on Isar {
IsarCollection<Settings> get settings => this.collection();
}
const SettingsSchema = CollectionSchema(
name: r'Settings',
id: -8656046621518759136,
properties: {
r'femaleToilets': PropertySchema(
id: 0,
name: r'femaleToilets',
type: IsarType.bool,
),
r'handicapToilets': PropertySchema(
id: 1,
name: r'handicapToilets',
type: IsarType.bool,
),
r'maleToilets': PropertySchema(
id: 2,
name: r'maleToilets',
type: IsarType.bool,
),
r'showComputerPools': PropertySchema(
id: 3,
name: r'showComputerPools',
type: IsarType.bool,
),
r'showDoors': PropertySchema(
id: 4,
name: r'showDoors',
type: IsarType.bool,
),
r'showElevators': PropertySchema(
id: 5,
name: r'showElevators',
type: IsarType.bool,
),
r'showFoodAndDrink': PropertySchema(
id: 6,
name: r'showFoodAndDrink',
type: IsarType.bool,
),
r'showIcons': PropertySchema(
id: 7,
name: r'showIcons',
type: IsarType.bool,
),
r'showLectureHalls': PropertySchema(
id: 8,
name: r'showLectureHalls',
type: IsarType.bool,
),
r'showSeminarRooms': PropertySchema(
id: 9,
name: r'showSeminarRooms',
type: IsarType.bool,
),
r'showStairs': PropertySchema(
id: 10,
name: r'showStairs',
type: IsarType.bool,
),
r'showToilets': PropertySchema(
id: 11,
name: r'showToilets',
type: IsarType.bool,
)
},
estimateSize: _settingsEstimateSize,
serialize: _settingsSerialize,
deserialize: _settingsDeserialize,
deserializeProp: _settingsDeserializeProp,
idName: r'id',
indexes: {},
links: {},
embeddedSchemas: {},
getId: _settingsGetId,
getLinks: _settingsGetLinks,
attach: _settingsAttach,
version: '3.1.0+1',
);
int _settingsEstimateSize(
Settings object,
List<int> offsets,
Map<Type, List<int>> allOffsets,
) {
var bytesCount = offsets.last;
return bytesCount;
}
void _settingsSerialize(
Settings object,
IsarWriter writer,
List<int> offsets,
Map<Type, List<int>> allOffsets,
) {
writer.writeBool(offsets[0], object.femaleToilets);
writer.writeBool(offsets[1], object.handicapToilets);
writer.writeBool(offsets[2], object.maleToilets);
writer.writeBool(offsets[3], object.showComputerPools);
writer.writeBool(offsets[4], object.showDoors);
writer.writeBool(offsets[5], object.showElevators);
writer.writeBool(offsets[6], object.showFoodAndDrink);
writer.writeBool(offsets[7], object.showIcons);
writer.writeBool(offsets[8], object.showLectureHalls);
writer.writeBool(offsets[9], object.showSeminarRooms);
writer.writeBool(offsets[10], object.showStairs);
writer.writeBool(offsets[11], object.showToilets);
}
Settings _settingsDeserialize(
Id id,
IsarReader reader,
List<int> offsets,
Map<Type, List<int>> allOffsets,
) {
final object = Settings();
object.femaleToilets = reader.readBool(offsets[0]);
object.handicapToilets = reader.readBool(offsets[1]);
object.id = id;
object.maleToilets = reader.readBool(offsets[2]);
object.showComputerPools = reader.readBool(offsets[3]);
object.showDoors = reader.readBool(offsets[4]);
object.showElevators = reader.readBool(offsets[5]);
object.showFoodAndDrink = reader.readBool(offsets[6]);
object.showIcons = reader.readBool(offsets[7]);
object.showLectureHalls = reader.readBool(offsets[8]);
object.showSeminarRooms = reader.readBool(offsets[9]);
object.showStairs = reader.readBool(offsets[10]);
object.showToilets = reader.readBool(offsets[11]);
return object;
}
P _settingsDeserializeProp<P>(
IsarReader reader,
int propertyId,
int offset,
Map<Type, List<int>> allOffsets,
) {
switch (propertyId) {
case 0:
return (reader.readBool(offset)) as P;
case 1:
return (reader.readBool(offset)) as P;
case 2:
return (reader.readBool(offset)) as P;
case 3:
return (reader.readBool(offset)) as P;
case 4:
return (reader.readBool(offset)) as P;
case 5:
return (reader.readBool(offset)) as P;
case 6:
return (reader.readBool(offset)) as P;
case 7:
return (reader.readBool(offset)) as P;
case 8:
return (reader.readBool(offset)) as P;
case 9:
return (reader.readBool(offset)) as P;
case 10:
return (reader.readBool(offset)) as P;
case 11:
return (reader.readBool(offset)) as P;
default:
throw IsarError('Unknown property with id $propertyId');
}
}
Id _settingsGetId(Settings object) {
return object.id;
}
List<IsarLinkBase<dynamic>> _settingsGetLinks(Settings object) {
return [];
}
void _settingsAttach(IsarCollection<dynamic> col, Id id, Settings object) {
object.id = id;
}
extension SettingsQueryWhereSort on QueryBuilder<Settings, Settings, QWhere> {
QueryBuilder<Settings, Settings, QAfterWhere> anyId() {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(const IdWhereClause.any());
});
}
}
extension SettingsQueryWhere on QueryBuilder<Settings, Settings, QWhereClause> {
QueryBuilder<Settings, Settings, QAfterWhereClause> idEqualTo(Id id) {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between(
lower: id,
upper: id,
));
});
}
QueryBuilder<Settings, Settings, QAfterWhereClause> idNotEqualTo(Id id) {
return QueryBuilder.apply(this, (query) {
if (query.whereSort == Sort.asc) {
return query
.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: false),
)
.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: false),
);
} else {
return query
.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: false),
)
.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: false),
);
}
});
}
QueryBuilder<Settings, Settings, QAfterWhereClause> idGreaterThan(Id id,
{bool include = false}) {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: include),
);
});
}
QueryBuilder<Settings, Settings, QAfterWhereClause> idLessThan(Id id,
{bool include = false}) {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: include),
);
});
}
QueryBuilder<Settings, Settings, QAfterWhereClause> idBetween(
Id lowerId,
Id upperId, {
bool includeLower = true,
bool includeUpper = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between(
lower: lowerId,
includeLower: includeLower,
upper: upperId,
includeUpper: includeUpper,
));
});
}
}
extension SettingsQueryFilter
on QueryBuilder<Settings, Settings, QFilterCondition> {
QueryBuilder<Settings, Settings, QAfterFilterCondition> femaleToiletsEqualTo(
bool value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'femaleToilets',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition>
handicapToiletsEqualTo(bool value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'handicapToilets',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> idEqualTo(Id value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'id',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> idGreaterThan(
Id value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan(
include: include,
property: r'id',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> idLessThan(
Id value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan(
include: include,
property: r'id',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> idBetween(
Id lower,
Id upper, {
bool includeLower = true,
bool includeUpper = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between(
property: r'id',
lower: lower,
includeLower: includeLower,
upper: upper,
includeUpper: includeUpper,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> maleToiletsEqualTo(
bool value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'maleToilets',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition>
showComputerPoolsEqualTo(bool value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'showComputerPools',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> showDoorsEqualTo(
bool value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'showDoors',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> showElevatorsEqualTo(
bool value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'showElevators',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition>
showFoodAndDrinkEqualTo(bool value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'showFoodAndDrink',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> showIconsEqualTo(
bool value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'showIcons',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition>
showLectureHallsEqualTo(bool value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'showLectureHalls',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition>
showSeminarRoomsEqualTo(bool value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'showSeminarRooms',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> showStairsEqualTo(
bool value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'showStairs',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> showToiletsEqualTo(
bool value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'showToilets',
value: value,
));
});
}
}
extension SettingsQueryObject
on QueryBuilder<Settings, Settings, QFilterCondition> {}
extension SettingsQueryLinks
on QueryBuilder<Settings, Settings, QFilterCondition> {}
extension SettingsQuerySortBy on QueryBuilder<Settings, Settings, QSortBy> {
QueryBuilder<Settings, Settings, QAfterSortBy> sortByFemaleToilets() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'femaleToilets', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByFemaleToiletsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'femaleToilets', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByHandicapToilets() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'handicapToilets', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByHandicapToiletsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'handicapToilets', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByMaleToilets() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'maleToilets', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByMaleToiletsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'maleToilets', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByShowComputerPools() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showComputerPools', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByShowComputerPoolsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showComputerPools', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByShowDoors() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showDoors', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByShowDoorsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showDoors', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByShowElevators() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showElevators', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByShowElevatorsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showElevators', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByShowFoodAndDrink() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showFoodAndDrink', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByShowFoodAndDrinkDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showFoodAndDrink', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByShowIcons() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showIcons', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByShowIconsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showIcons', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByShowLectureHalls() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showLectureHalls', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByShowLectureHallsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showLectureHalls', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByShowSeminarRooms() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showSeminarRooms', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByShowSeminarRoomsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showSeminarRooms', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByShowStairs() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showStairs', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByShowStairsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showStairs', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByShowToilets() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showToilets', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByShowToiletsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showToilets', Sort.desc);
});
}
}
extension SettingsQuerySortThenBy
on QueryBuilder<Settings, Settings, QSortThenBy> {
QueryBuilder<Settings, Settings, QAfterSortBy> thenByFemaleToilets() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'femaleToilets', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByFemaleToiletsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'femaleToilets', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByHandicapToilets() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'handicapToilets', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByHandicapToiletsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'handicapToilets', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenById() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'id', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByIdDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'id', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByMaleToilets() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'maleToilets', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByMaleToiletsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'maleToilets', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByShowComputerPools() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showComputerPools', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByShowComputerPoolsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showComputerPools', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByShowDoors() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showDoors', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByShowDoorsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showDoors', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByShowElevators() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showElevators', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByShowElevatorsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showElevators', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByShowFoodAndDrink() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showFoodAndDrink', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByShowFoodAndDrinkDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showFoodAndDrink', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByShowIcons() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showIcons', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByShowIconsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showIcons', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByShowLectureHalls() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showLectureHalls', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByShowLectureHallsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showLectureHalls', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByShowSeminarRooms() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showSeminarRooms', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByShowSeminarRoomsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showSeminarRooms', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByShowStairs() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showStairs', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByShowStairsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showStairs', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByShowToilets() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showToilets', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByShowToiletsDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'showToilets', Sort.desc);
});
}
}
extension SettingsQueryWhereDistinct
on QueryBuilder<Settings, Settings, QDistinct> {
QueryBuilder<Settings, Settings, QDistinct> distinctByFemaleToilets() {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'femaleToilets');
});
}
QueryBuilder<Settings, Settings, QDistinct> distinctByHandicapToilets() {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'handicapToilets');
});
}
QueryBuilder<Settings, Settings, QDistinct> distinctByMaleToilets() {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'maleToilets');
});
}
QueryBuilder<Settings, Settings, QDistinct> distinctByShowComputerPools() {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'showComputerPools');
});
}
QueryBuilder<Settings, Settings, QDistinct> distinctByShowDoors() {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'showDoors');
});
}
QueryBuilder<Settings, Settings, QDistinct> distinctByShowElevators() {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'showElevators');
});
}
QueryBuilder<Settings, Settings, QDistinct> distinctByShowFoodAndDrink() {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'showFoodAndDrink');
});
}
QueryBuilder<Settings, Settings, QDistinct> distinctByShowIcons() {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'showIcons');
});
}
QueryBuilder<Settings, Settings, QDistinct> distinctByShowLectureHalls() {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'showLectureHalls');
});
}
QueryBuilder<Settings, Settings, QDistinct> distinctByShowSeminarRooms() {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'showSeminarRooms');
});
}
QueryBuilder<Settings, Settings, QDistinct> distinctByShowStairs() {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'showStairs');
});
}
QueryBuilder<Settings, Settings, QDistinct> distinctByShowToilets() {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'showToilets');
});
}
}
extension SettingsQueryProperty
on QueryBuilder<Settings, Settings, QQueryProperty> {
QueryBuilder<Settings, int, QQueryOperations> idProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'id');
});
}
QueryBuilder<Settings, bool, QQueryOperations> femaleToiletsProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'femaleToilets');
});
}
QueryBuilder<Settings, bool, QQueryOperations> handicapToiletsProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'handicapToilets');
});
}
QueryBuilder<Settings, bool, QQueryOperations> maleToiletsProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'maleToilets');
});
}
QueryBuilder<Settings, bool, QQueryOperations> showComputerPoolsProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'showComputerPools');
});
}
QueryBuilder<Settings, bool, QQueryOperations> showDoorsProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'showDoors');
});
}
QueryBuilder<Settings, bool, QQueryOperations> showElevatorsProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'showElevators');
});
}
QueryBuilder<Settings, bool, QQueryOperations> showFoodAndDrinkProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'showFoodAndDrink');
});
}
QueryBuilder<Settings, bool, QQueryOperations> showIconsProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'showIcons');
});
}
QueryBuilder<Settings, bool, QQueryOperations> showLectureHallsProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'showLectureHalls');
});
}
QueryBuilder<Settings, bool, QQueryOperations> showSeminarRoomsProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'showSeminarRooms');
});
}
QueryBuilder<Settings, bool, QQueryOperations> showStairsProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'showStairs');
});
}
QueryBuilder<Settings, bool, QQueryOperations> showToiletsProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'showToilets');
});
}
}

View File

@ -1,14 +1,17 @@
import 'dart:async';
import 'dart:convert';
import 'package:anyhow/anyhow.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:geojson_vi/geojson_vi.dart';
import 'package:geolocator/geolocator.dart';
import 'package:get/get.dart';
import 'package:latlong2/latlong.dart';
import 'package:uninav/components/feature_bottom_sheet.dart';
import 'package:uninav/data/geo/model.dart';
import 'package:uninav/data/geo/parser.dart';
import 'package:uninav/util/geojson_util.dart';
import 'package:uninav/util/geolocator.dart';
import 'package:uninav/util/geomath.dart';
class MyMapController extends GetxController {
@ -17,6 +20,10 @@ class MyMapController extends GetxController {
final RxList<Feature> features = <Feature>[].obs;
final currentLevel = 1.obs;
final levels = <int>[1].obs;
final Rx<Position?> position = null.obs;
bool _locationEnsured = false;
@override
onInit() async {
print("init");
@ -98,6 +105,8 @@ class MyMapController extends GetxController {
feature.geometry, feature.id);
if (parsed case Ok(:final ok)) {
featuresList.add(ok);
} else {
print('Error parsing feature: $parsed');
}
}
@ -137,4 +146,46 @@ class MyMapController extends GetxController {
}
showFeatureBottomSheet(feature, closestFeatures);
}
Future<Result<Position>> getCurrentPosition() async {
if (!_locationEnsured) {
final ensureRes = await ensureLocationPermission();
if (ensureRes is Err) {
// TODO: check that it works
return ensureRes as Err<Position>;
}
}
_locationEnsured = true;
try {
final pos = await Geolocator.getCurrentPosition(
// desiredAccuracy: LocationAccuracy.high,
timeLimit: Duration(minutes: 1),
);
position.value = pos;
return Ok(pos);
} on TimeoutException catch (e) {
return bail("Timeout while waiting for location lock: $e");
}
}
Future<Result<()>> subscribePosition() async {
if (!_locationEnsured) {
final ensureRes = await ensureLocationPermission();
if (ensureRes is Err) {
// TODO: check that it works
return ensureRes;
}
}
_locationEnsured = true;
Geolocator.getPositionStream(
locationSettings: const LocationSettings(
accuracy: LocationAccuracy.high,
distanceFilter: 100,
//timeLimit: Duration(minutes: 10)
),
).listen((pos) {
position.value = pos;
});
return const Ok(());
}
}

View File

@ -0,0 +1,72 @@
import 'dart:convert';
import 'package:get/get.dart';
import 'package:path_provider/path_provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
part 'shared_prefs_controller.freezed.dart';
part 'shared_prefs_controller.g.dart';
class SharedPrefsController {
late SharedPreferences _sharedPrefs;
final Rx<Settings> settings = Settings().obs;
SharedPrefsController();
Future<void> initialize() async {
_sharedPrefs = await SharedPreferences.getInstance();
try {
final settingsJson = _sharedPrefs.getString("settings");
if (settingsJson != null) {
settings.value = Settings.fromJson(jsonDecode(settingsJson));
} else {
settings.value = const Settings();
}
} catch (e) {
settings.value = const Settings();
}
}
Future<void> persistSettings() async {
final prefs = await SharedPreferences.getInstance();
await prefs.setString('settings', jsonEncode(settings.value));
}
Future<Settings> loadSettings() async {
final prefs = await SharedPreferences.getInstance();
final settingsJson = prefs.getString('settings');
return settingsJson != null
? Settings.fromJson(jsonDecode(settingsJson))
: const Settings();
}
}
@freezed
class Settings with _$Settings {
const factory Settings({
@Default(1) int id,
@Default(true) bool showIcons,
@Default(true) bool showElevators,
@Default(true) bool showFoodAndDrink,
@Default(true) bool showLectureHalls,
@Default(true) bool showComputerPools,
@Default(true) bool showSeminarRooms,
@Default(true) bool showToilets,
@Default(true) bool showStairs,
@Default(true) bool showDoors,
@Default(false) bool maleToilets,
@Default(false) bool femaleToilets,
@Default(false) bool handicapToilets,
}) = _Settings;
factory Settings.fromJson(Map<String, dynamic> json) =>
_$SettingsFromJson(json);
}
enum ToiletPreference {
male,
female,
disabled,
}

View File

@ -0,0 +1,433 @@
// coverage:ignore-file
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
part of 'shared_prefs_controller.dart';
// **************************************************************************
// FreezedGenerator
// **************************************************************************
T _$identity<T>(T value) => value;
final _privateConstructorUsedError = UnsupportedError(
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models');
Settings _$SettingsFromJson(Map<String, dynamic> json) {
return _Settings.fromJson(json);
}
/// @nodoc
mixin _$Settings {
int get id => throw _privateConstructorUsedError;
bool get showIcons => throw _privateConstructorUsedError;
bool get showElevators => throw _privateConstructorUsedError;
bool get showFoodAndDrink => throw _privateConstructorUsedError;
bool get showLectureHalls => throw _privateConstructorUsedError;
bool get showComputerPools => throw _privateConstructorUsedError;
bool get showSeminarRooms => throw _privateConstructorUsedError;
bool get showToilets => throw _privateConstructorUsedError;
bool get showStairs => throw _privateConstructorUsedError;
bool get showDoors => throw _privateConstructorUsedError;
bool get maleToilets => throw _privateConstructorUsedError;
bool get femaleToilets => throw _privateConstructorUsedError;
bool get handicapToilets => throw _privateConstructorUsedError;
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
$SettingsCopyWith<Settings> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $SettingsCopyWith<$Res> {
factory $SettingsCopyWith(Settings value, $Res Function(Settings) then) =
_$SettingsCopyWithImpl<$Res, Settings>;
@useResult
$Res call(
{int id,
bool showIcons,
bool showElevators,
bool showFoodAndDrink,
bool showLectureHalls,
bool showComputerPools,
bool showSeminarRooms,
bool showToilets,
bool showStairs,
bool showDoors,
bool maleToilets,
bool femaleToilets,
bool handicapToilets});
}
/// @nodoc
class _$SettingsCopyWithImpl<$Res, $Val extends Settings>
implements $SettingsCopyWith<$Res> {
_$SettingsCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
@pragma('vm:prefer-inline')
@override
$Res call({
Object? id = null,
Object? showIcons = null,
Object? showElevators = null,
Object? showFoodAndDrink = null,
Object? showLectureHalls = null,
Object? showComputerPools = null,
Object? showSeminarRooms = null,
Object? showToilets = null,
Object? showStairs = null,
Object? showDoors = null,
Object? maleToilets = null,
Object? femaleToilets = null,
Object? handicapToilets = null,
}) {
return _then(_value.copyWith(
id: null == id
? _value.id
: id // ignore: cast_nullable_to_non_nullable
as int,
showIcons: null == showIcons
? _value.showIcons
: showIcons // ignore: cast_nullable_to_non_nullable
as bool,
showElevators: null == showElevators
? _value.showElevators
: showElevators // ignore: cast_nullable_to_non_nullable
as bool,
showFoodAndDrink: null == showFoodAndDrink
? _value.showFoodAndDrink
: showFoodAndDrink // ignore: cast_nullable_to_non_nullable
as bool,
showLectureHalls: null == showLectureHalls
? _value.showLectureHalls
: showLectureHalls // ignore: cast_nullable_to_non_nullable
as bool,
showComputerPools: null == showComputerPools
? _value.showComputerPools
: showComputerPools // ignore: cast_nullable_to_non_nullable
as bool,
showSeminarRooms: null == showSeminarRooms
? _value.showSeminarRooms
: showSeminarRooms // ignore: cast_nullable_to_non_nullable
as bool,
showToilets: null == showToilets
? _value.showToilets
: showToilets // ignore: cast_nullable_to_non_nullable
as bool,
showStairs: null == showStairs
? _value.showStairs
: showStairs // ignore: cast_nullable_to_non_nullable
as bool,
showDoors: null == showDoors
? _value.showDoors
: showDoors // ignore: cast_nullable_to_non_nullable
as bool,
maleToilets: null == maleToilets
? _value.maleToilets
: maleToilets // ignore: cast_nullable_to_non_nullable
as bool,
femaleToilets: null == femaleToilets
? _value.femaleToilets
: femaleToilets // ignore: cast_nullable_to_non_nullable
as bool,
handicapToilets: null == handicapToilets
? _value.handicapToilets
: handicapToilets // ignore: cast_nullable_to_non_nullable
as bool,
) as $Val);
}
}
/// @nodoc
abstract class _$$SettingsImplCopyWith<$Res>
implements $SettingsCopyWith<$Res> {
factory _$$SettingsImplCopyWith(
_$SettingsImpl value, $Res Function(_$SettingsImpl) then) =
__$$SettingsImplCopyWithImpl<$Res>;
@override
@useResult
$Res call(
{int id,
bool showIcons,
bool showElevators,
bool showFoodAndDrink,
bool showLectureHalls,
bool showComputerPools,
bool showSeminarRooms,
bool showToilets,
bool showStairs,
bool showDoors,
bool maleToilets,
bool femaleToilets,
bool handicapToilets});
}
/// @nodoc
class __$$SettingsImplCopyWithImpl<$Res>
extends _$SettingsCopyWithImpl<$Res, _$SettingsImpl>
implements _$$SettingsImplCopyWith<$Res> {
__$$SettingsImplCopyWithImpl(
_$SettingsImpl _value, $Res Function(_$SettingsImpl) _then)
: super(_value, _then);
@pragma('vm:prefer-inline')
@override
$Res call({
Object? id = null,
Object? showIcons = null,
Object? showElevators = null,
Object? showFoodAndDrink = null,
Object? showLectureHalls = null,
Object? showComputerPools = null,
Object? showSeminarRooms = null,
Object? showToilets = null,
Object? showStairs = null,
Object? showDoors = null,
Object? maleToilets = null,
Object? femaleToilets = null,
Object? handicapToilets = null,
}) {
return _then(_$SettingsImpl(
id: null == id
? _value.id
: id // ignore: cast_nullable_to_non_nullable
as int,
showIcons: null == showIcons
? _value.showIcons
: showIcons // ignore: cast_nullable_to_non_nullable
as bool,
showElevators: null == showElevators
? _value.showElevators
: showElevators // ignore: cast_nullable_to_non_nullable
as bool,
showFoodAndDrink: null == showFoodAndDrink
? _value.showFoodAndDrink
: showFoodAndDrink // ignore: cast_nullable_to_non_nullable
as bool,
showLectureHalls: null == showLectureHalls
? _value.showLectureHalls
: showLectureHalls // ignore: cast_nullable_to_non_nullable
as bool,
showComputerPools: null == showComputerPools
? _value.showComputerPools
: showComputerPools // ignore: cast_nullable_to_non_nullable
as bool,
showSeminarRooms: null == showSeminarRooms
? _value.showSeminarRooms
: showSeminarRooms // ignore: cast_nullable_to_non_nullable
as bool,
showToilets: null == showToilets
? _value.showToilets
: showToilets // ignore: cast_nullable_to_non_nullable
as bool,
showStairs: null == showStairs
? _value.showStairs
: showStairs // ignore: cast_nullable_to_non_nullable
as bool,
showDoors: null == showDoors
? _value.showDoors
: showDoors // ignore: cast_nullable_to_non_nullable
as bool,
maleToilets: null == maleToilets
? _value.maleToilets
: maleToilets // ignore: cast_nullable_to_non_nullable
as bool,
femaleToilets: null == femaleToilets
? _value.femaleToilets
: femaleToilets // ignore: cast_nullable_to_non_nullable
as bool,
handicapToilets: null == handicapToilets
? _value.handicapToilets
: handicapToilets // ignore: cast_nullable_to_non_nullable
as bool,
));
}
}
/// @nodoc
@JsonSerializable()
class _$SettingsImpl implements _Settings {
const _$SettingsImpl(
{this.id = 1,
this.showIcons = true,
this.showElevators = true,
this.showFoodAndDrink = true,
this.showLectureHalls = true,
this.showComputerPools = true,
this.showSeminarRooms = true,
this.showToilets = true,
this.showStairs = true,
this.showDoors = true,
this.maleToilets = false,
this.femaleToilets = false,
this.handicapToilets = false});
factory _$SettingsImpl.fromJson(Map<String, dynamic> json) =>
_$$SettingsImplFromJson(json);
@override
@JsonKey()
final int id;
@override
@JsonKey()
final bool showIcons;
@override
@JsonKey()
final bool showElevators;
@override
@JsonKey()
final bool showFoodAndDrink;
@override
@JsonKey()
final bool showLectureHalls;
@override
@JsonKey()
final bool showComputerPools;
@override
@JsonKey()
final bool showSeminarRooms;
@override
@JsonKey()
final bool showToilets;
@override
@JsonKey()
final bool showStairs;
@override
@JsonKey()
final bool showDoors;
@override
@JsonKey()
final bool maleToilets;
@override
@JsonKey()
final bool femaleToilets;
@override
@JsonKey()
final bool handicapToilets;
@override
String toString() {
return 'Settings(id: $id, showIcons: $showIcons, showElevators: $showElevators, showFoodAndDrink: $showFoodAndDrink, showLectureHalls: $showLectureHalls, showComputerPools: $showComputerPools, showSeminarRooms: $showSeminarRooms, showToilets: $showToilets, showStairs: $showStairs, showDoors: $showDoors, maleToilets: $maleToilets, femaleToilets: $femaleToilets, handicapToilets: $handicapToilets)';
}
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$SettingsImpl &&
(identical(other.id, id) || other.id == id) &&
(identical(other.showIcons, showIcons) ||
other.showIcons == showIcons) &&
(identical(other.showElevators, showElevators) ||
other.showElevators == showElevators) &&
(identical(other.showFoodAndDrink, showFoodAndDrink) ||
other.showFoodAndDrink == showFoodAndDrink) &&
(identical(other.showLectureHalls, showLectureHalls) ||
other.showLectureHalls == showLectureHalls) &&
(identical(other.showComputerPools, showComputerPools) ||
other.showComputerPools == showComputerPools) &&
(identical(other.showSeminarRooms, showSeminarRooms) ||
other.showSeminarRooms == showSeminarRooms) &&
(identical(other.showToilets, showToilets) ||
other.showToilets == showToilets) &&
(identical(other.showStairs, showStairs) ||
other.showStairs == showStairs) &&
(identical(other.showDoors, showDoors) ||
other.showDoors == showDoors) &&
(identical(other.maleToilets, maleToilets) ||
other.maleToilets == maleToilets) &&
(identical(other.femaleToilets, femaleToilets) ||
other.femaleToilets == femaleToilets) &&
(identical(other.handicapToilets, handicapToilets) ||
other.handicapToilets == handicapToilets));
}
@JsonKey(ignore: true)
@override
int get hashCode => Object.hash(
runtimeType,
id,
showIcons,
showElevators,
showFoodAndDrink,
showLectureHalls,
showComputerPools,
showSeminarRooms,
showToilets,
showStairs,
showDoors,
maleToilets,
femaleToilets,
handicapToilets);
@JsonKey(ignore: true)
@override
@pragma('vm:prefer-inline')
_$$SettingsImplCopyWith<_$SettingsImpl> get copyWith =>
__$$SettingsImplCopyWithImpl<_$SettingsImpl>(this, _$identity);
@override
Map<String, dynamic> toJson() {
return _$$SettingsImplToJson(
this,
);
}
}
abstract class _Settings implements Settings {
const factory _Settings(
{final int id,
final bool showIcons,
final bool showElevators,
final bool showFoodAndDrink,
final bool showLectureHalls,
final bool showComputerPools,
final bool showSeminarRooms,
final bool showToilets,
final bool showStairs,
final bool showDoors,
final bool maleToilets,
final bool femaleToilets,
final bool handicapToilets}) = _$SettingsImpl;
factory _Settings.fromJson(Map<String, dynamic> json) =
_$SettingsImpl.fromJson;
@override
int get id;
@override
bool get showIcons;
@override
bool get showElevators;
@override
bool get showFoodAndDrink;
@override
bool get showLectureHalls;
@override
bool get showComputerPools;
@override
bool get showSeminarRooms;
@override
bool get showToilets;
@override
bool get showStairs;
@override
bool get showDoors;
@override
bool get maleToilets;
@override
bool get femaleToilets;
@override
bool get handicapToilets;
@override
@JsonKey(ignore: true)
_$$SettingsImplCopyWith<_$SettingsImpl> get copyWith =>
throw _privateConstructorUsedError;
}

View File

@ -0,0 +1,41 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'shared_prefs_controller.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
_$SettingsImpl _$$SettingsImplFromJson(Map<String, dynamic> json) =>
_$SettingsImpl(
id: json['id'] as int? ?? 1,
showIcons: json['showIcons'] as bool? ?? true,
showElevators: json['showElevators'] as bool? ?? true,
showFoodAndDrink: json['showFoodAndDrink'] as bool? ?? true,
showLectureHalls: json['showLectureHalls'] as bool? ?? true,
showComputerPools: json['showComputerPools'] as bool? ?? true,
showSeminarRooms: json['showSeminarRooms'] as bool? ?? true,
showToilets: json['showToilets'] as bool? ?? true,
showStairs: json['showStairs'] as bool? ?? true,
showDoors: json['showDoors'] as bool? ?? true,
maleToilets: json['maleToilets'] as bool? ?? false,
femaleToilets: json['femaleToilets'] as bool? ?? false,
handicapToilets: json['handicapToilets'] as bool? ?? false,
);
Map<String, dynamic> _$$SettingsImplToJson(_$SettingsImpl instance) =>
<String, dynamic>{
'id': instance.id,
'showIcons': instance.showIcons,
'showElevators': instance.showElevators,
'showFoodAndDrink': instance.showFoodAndDrink,
'showLectureHalls': instance.showLectureHalls,
'showComputerPools': instance.showComputerPools,
'showSeminarRooms': instance.showSeminarRooms,
'showToilets': instance.showToilets,
'showStairs': instance.showStairs,
'showDoors': instance.showDoors,
'maleToilets': instance.maleToilets,
'femaleToilets': instance.femaleToilets,
'handicapToilets': instance.handicapToilets,
};