mobile bluesky app made with flutter lazurite.stormlightlabs.org/
mobile bluesky flutter
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: theming & typography

+2031 -289
+12 -11
docs/tasks/phase-1.md
··· 27 27 28 28 ## M3 — Settings & Theming 29 29 30 - - [ ] `SettingsCubit` backed by Drift — theme mode preference (system / light / dark) 31 - - [ ] Oxocarbon Dark `ThemeData` / `ColorScheme` 32 - - [ ] Oxocarbon Light `ThemeData` / `ColorScheme` 33 - - [ ] Catppuccin Mocha (Dark) `ThemeData` / `ColorScheme` 34 - - [ ] Catppuccin Latte (Light) `ThemeData` / `ColorScheme` 35 - - [ ] Nord Polar Night (Dark) `ThemeData` / `ColorScheme` 36 - - [ ] Nord Snow Storm (Light) `ThemeData` / `ColorScheme` 37 - - [ ] Rosé Pine Main (Dark) `ThemeData` / `ColorScheme` 38 - - [ ] Rosé Pine Dawn (Light) `ThemeData` / `ColorScheme` 39 - - [ ] Theme picker in settings screen (all 4 palettes × 2 variants + system) 40 - - [ ] Respect system theme when set to "system" 30 + - [x] `SettingsCubit` backed by Drift — theme mode preference (system / light / dark) 31 + - [x] Oxocarbon Dark `ThemeData` / `ColorScheme` 32 + - [x] Oxocarbon Light `ThemeData` / `ColorScheme` 33 + - [x] Catppuccin Mocha (Dark) `ThemeData` / `ColorScheme` 34 + - [x] Catppuccin Latte (Light) `ThemeData` / `ColorScheme` 35 + - [x] Nord Polar Night (Dark) `ThemeData` / `ColorScheme` 36 + - [x] Nord Snow Storm (Light) `ThemeData` / `ColorScheme` 37 + - [x] Rosé Pine Main (Dark) `ThemeData` / `ColorScheme` 38 + - [x] Rosé Pine Dawn (Light) `ThemeData` / `ColorScheme` 39 + - [x] Theme picker in settings screen (all 4 palettes × 2 variants + system) 40 + - [x] Respect system theme when set to "system" 41 + - NOTE: sans font changed to dmsans from geist 41 42 42 43 ## M4 — Dev Scripts 43 44
+739 -263
lib/core/database/app_database.g.dart
··· 26 26 type: DriftSqlType.string, 27 27 requiredDuringInsert: true, 28 28 ); 29 - static const VerificationMeta _displayNameMeta = const VerificationMeta('displayName'); 29 + static const VerificationMeta _displayNameMeta = const VerificationMeta( 30 + 'displayName', 31 + ); 30 32 @override 31 33 late final GeneratedColumn<String> displayName = GeneratedColumn<String>( 32 34 'display_name', ··· 35 37 type: DriftSqlType.string, 36 38 requiredDuringInsert: false, 37 39 ); 38 - static const VerificationMeta _serviceMeta = const VerificationMeta('service'); 40 + static const VerificationMeta _serviceMeta = const VerificationMeta( 41 + 'service', 42 + ); 39 43 @override 40 44 late final GeneratedColumn<String> service = GeneratedColumn<String>( 41 45 'service', ··· 44 48 type: DriftSqlType.string, 45 49 requiredDuringInsert: false, 46 50 ); 47 - static const VerificationMeta _accessTokenMeta = const VerificationMeta('accessToken'); 51 + static const VerificationMeta _accessTokenMeta = const VerificationMeta( 52 + 'accessToken', 53 + ); 48 54 @override 49 55 late final GeneratedColumn<String> accessToken = GeneratedColumn<String>( 50 56 'access_token', ··· 53 59 type: DriftSqlType.string, 54 60 requiredDuringInsert: true, 55 61 ); 56 - static const VerificationMeta _refreshTokenMeta = const VerificationMeta('refreshToken'); 62 + static const VerificationMeta _refreshTokenMeta = const VerificationMeta( 63 + 'refreshToken', 64 + ); 57 65 @override 58 66 late final GeneratedColumn<String> refreshToken = GeneratedColumn<String>( 59 67 'refresh_token', ··· 62 70 type: DriftSqlType.string, 63 71 requiredDuringInsert: false, 64 72 ); 65 - static const VerificationMeta _dpopPublicKeyMeta = const VerificationMeta('dpopPublicKey'); 73 + static const VerificationMeta _dpopPublicKeyMeta = const VerificationMeta( 74 + 'dpopPublicKey', 75 + ); 66 76 @override 67 77 late final GeneratedColumn<String> dpopPublicKey = GeneratedColumn<String>( 68 78 'dpop_public_key', ··· 71 81 type: DriftSqlType.string, 72 82 requiredDuringInsert: false, 73 83 ); 74 - static const VerificationMeta _dpopPrivateKeyMeta = const VerificationMeta('dpopPrivateKey'); 84 + static const VerificationMeta _dpopPrivateKeyMeta = const VerificationMeta( 85 + 'dpopPrivateKey', 86 + ); 75 87 @override 76 88 late final GeneratedColumn<String> dpopPrivateKey = GeneratedColumn<String>( 77 89 'dpop_private_key', ··· 80 92 type: DriftSqlType.string, 81 93 requiredDuringInsert: false, 82 94 ); 83 - static const VerificationMeta _dpopNonceMeta = const VerificationMeta('dpopNonce'); 95 + static const VerificationMeta _dpopNonceMeta = const VerificationMeta( 96 + 'dpopNonce', 97 + ); 84 98 @override 85 99 late final GeneratedColumn<String> dpopNonce = GeneratedColumn<String>( 86 100 'dpop_nonce', ··· 89 103 type: DriftSqlType.string, 90 104 requiredDuringInsert: false, 91 105 ); 92 - static const VerificationMeta _expiresAtMeta = const VerificationMeta('expiresAt'); 106 + static const VerificationMeta _expiresAtMeta = const VerificationMeta( 107 + 'expiresAt', 108 + ); 93 109 @override 94 110 late final GeneratedColumn<DateTime> expiresAt = GeneratedColumn<DateTime>( 95 111 'expires_at', ··· 98 114 type: DriftSqlType.dateTime, 99 115 requiredDuringInsert: false, 100 116 ); 101 - static const VerificationMeta _createdAtMeta = const VerificationMeta('createdAt'); 117 + static const VerificationMeta _createdAtMeta = const VerificationMeta( 118 + 'createdAt', 119 + ); 102 120 @override 103 121 late final GeneratedColumn<DateTime> createdAt = GeneratedColumn<DateTime>( 104 122 'created_at', ··· 108 126 requiredDuringInsert: false, 109 127 defaultValue: currentDateAndTime, 110 128 ); 111 - static const VerificationMeta _updatedAtMeta = const VerificationMeta('updatedAt'); 129 + static const VerificationMeta _updatedAtMeta = const VerificationMeta( 130 + 'updatedAt', 131 + ); 112 132 @override 113 133 late final GeneratedColumn<DateTime> updatedAt = GeneratedColumn<DateTime>( 114 134 'updated_at', ··· 139 159 String get actualTableName => $name; 140 160 static const String $name = 'accounts'; 141 161 @override 142 - VerificationContext validateIntegrity(Insertable<Account> instance, {bool isInserting = false}) { 162 + VerificationContext validateIntegrity( 163 + Insertable<Account> instance, { 164 + bool isInserting = false, 165 + }) { 143 166 final context = VerificationContext(); 144 167 final data = instance.toColumns(true); 145 168 if (data.containsKey('did')) { 146 - context.handle(_didMeta, did.isAcceptableOrUnknown(data['did']!, _didMeta)); 169 + context.handle( 170 + _didMeta, 171 + did.isAcceptableOrUnknown(data['did']!, _didMeta), 172 + ); 147 173 } else if (isInserting) { 148 174 context.missing(_didMeta); 149 175 } 150 176 if (data.containsKey('handle')) { 151 - context.handle(_handleMeta, handle.isAcceptableOrUnknown(data['handle']!, _handleMeta)); 177 + context.handle( 178 + _handleMeta, 179 + handle.isAcceptableOrUnknown(data['handle']!, _handleMeta), 180 + ); 152 181 } else if (isInserting) { 153 182 context.missing(_handleMeta); 154 183 } 155 184 if (data.containsKey('display_name')) { 156 - context.handle(_displayNameMeta, displayName.isAcceptableOrUnknown(data['display_name']!, _displayNameMeta)); 185 + context.handle( 186 + _displayNameMeta, 187 + displayName.isAcceptableOrUnknown( 188 + data['display_name']!, 189 + _displayNameMeta, 190 + ), 191 + ); 157 192 } 158 193 if (data.containsKey('service')) { 159 - context.handle(_serviceMeta, service.isAcceptableOrUnknown(data['service']!, _serviceMeta)); 194 + context.handle( 195 + _serviceMeta, 196 + service.isAcceptableOrUnknown(data['service']!, _serviceMeta), 197 + ); 160 198 } 161 199 if (data.containsKey('access_token')) { 162 - context.handle(_accessTokenMeta, accessToken.isAcceptableOrUnknown(data['access_token']!, _accessTokenMeta)); 200 + context.handle( 201 + _accessTokenMeta, 202 + accessToken.isAcceptableOrUnknown( 203 + data['access_token']!, 204 + _accessTokenMeta, 205 + ), 206 + ); 163 207 } else if (isInserting) { 164 208 context.missing(_accessTokenMeta); 165 209 } 166 210 if (data.containsKey('refresh_token')) { 167 - context.handle(_refreshTokenMeta, refreshToken.isAcceptableOrUnknown(data['refresh_token']!, _refreshTokenMeta)); 211 + context.handle( 212 + _refreshTokenMeta, 213 + refreshToken.isAcceptableOrUnknown( 214 + data['refresh_token']!, 215 + _refreshTokenMeta, 216 + ), 217 + ); 168 218 } 169 219 if (data.containsKey('dpop_public_key')) { 170 220 context.handle( 171 221 _dpopPublicKeyMeta, 172 - dpopPublicKey.isAcceptableOrUnknown(data['dpop_public_key']!, _dpopPublicKeyMeta), 222 + dpopPublicKey.isAcceptableOrUnknown( 223 + data['dpop_public_key']!, 224 + _dpopPublicKeyMeta, 225 + ), 173 226 ); 174 227 } 175 228 if (data.containsKey('dpop_private_key')) { 176 229 context.handle( 177 230 _dpopPrivateKeyMeta, 178 - dpopPrivateKey.isAcceptableOrUnknown(data['dpop_private_key']!, _dpopPrivateKeyMeta), 231 + dpopPrivateKey.isAcceptableOrUnknown( 232 + data['dpop_private_key']!, 233 + _dpopPrivateKeyMeta, 234 + ), 179 235 ); 180 236 } 181 237 if (data.containsKey('dpop_nonce')) { 182 - context.handle(_dpopNonceMeta, dpopNonce.isAcceptableOrUnknown(data['dpop_nonce']!, _dpopNonceMeta)); 238 + context.handle( 239 + _dpopNonceMeta, 240 + dpopNonce.isAcceptableOrUnknown(data['dpop_nonce']!, _dpopNonceMeta), 241 + ); 183 242 } 184 243 if (data.containsKey('expires_at')) { 185 - context.handle(_expiresAtMeta, expiresAt.isAcceptableOrUnknown(data['expires_at']!, _expiresAtMeta)); 244 + context.handle( 245 + _expiresAtMeta, 246 + expiresAt.isAcceptableOrUnknown(data['expires_at']!, _expiresAtMeta), 247 + ); 186 248 } 187 249 if (data.containsKey('created_at')) { 188 - context.handle(_createdAtMeta, createdAt.isAcceptableOrUnknown(data['created_at']!, _createdAtMeta)); 250 + context.handle( 251 + _createdAtMeta, 252 + createdAt.isAcceptableOrUnknown(data['created_at']!, _createdAtMeta), 253 + ); 189 254 } 190 255 if (data.containsKey('updated_at')) { 191 - context.handle(_updatedAtMeta, updatedAt.isAcceptableOrUnknown(data['updated_at']!, _updatedAtMeta)); 256 + context.handle( 257 + _updatedAtMeta, 258 + updatedAt.isAcceptableOrUnknown(data['updated_at']!, _updatedAtMeta), 259 + ); 192 260 } 193 261 return context; 194 262 } ··· 199 267 Account map(Map<String, dynamic> data, {String? tablePrefix}) { 200 268 final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; 201 269 return Account( 202 - did: attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}did'])!, 203 - handle: attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}handle'])!, 204 - displayName: attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}display_name']), 205 - service: attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}service']), 206 - accessToken: attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}access_token'])!, 207 - refreshToken: attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}refresh_token']), 208 - dpopPublicKey: attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}dpop_public_key']), 270 + did: attachedDatabase.typeMapping.read( 271 + DriftSqlType.string, 272 + data['${effectivePrefix}did'], 273 + )!, 274 + handle: attachedDatabase.typeMapping.read( 275 + DriftSqlType.string, 276 + data['${effectivePrefix}handle'], 277 + )!, 278 + displayName: attachedDatabase.typeMapping.read( 279 + DriftSqlType.string, 280 + data['${effectivePrefix}display_name'], 281 + ), 282 + service: attachedDatabase.typeMapping.read( 283 + DriftSqlType.string, 284 + data['${effectivePrefix}service'], 285 + ), 286 + accessToken: attachedDatabase.typeMapping.read( 287 + DriftSqlType.string, 288 + data['${effectivePrefix}access_token'], 289 + )!, 290 + refreshToken: attachedDatabase.typeMapping.read( 291 + DriftSqlType.string, 292 + data['${effectivePrefix}refresh_token'], 293 + ), 294 + dpopPublicKey: attachedDatabase.typeMapping.read( 295 + DriftSqlType.string, 296 + data['${effectivePrefix}dpop_public_key'], 297 + ), 209 298 dpopPrivateKey: attachedDatabase.typeMapping.read( 210 299 DriftSqlType.string, 211 300 data['${effectivePrefix}dpop_private_key'], 212 301 ), 213 - dpopNonce: attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}dpop_nonce']), 214 - expiresAt: attachedDatabase.typeMapping.read(DriftSqlType.dateTime, data['${effectivePrefix}expires_at']), 215 - createdAt: attachedDatabase.typeMapping.read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, 216 - updatedAt: attachedDatabase.typeMapping.read(DriftSqlType.dateTime, data['${effectivePrefix}updated_at'])!, 302 + dpopNonce: attachedDatabase.typeMapping.read( 303 + DriftSqlType.string, 304 + data['${effectivePrefix}dpop_nonce'], 305 + ), 306 + expiresAt: attachedDatabase.typeMapping.read( 307 + DriftSqlType.dateTime, 308 + data['${effectivePrefix}expires_at'], 309 + ), 310 + createdAt: attachedDatabase.typeMapping.read( 311 + DriftSqlType.dateTime, 312 + data['${effectivePrefix}created_at'], 313 + )!, 314 + updatedAt: attachedDatabase.typeMapping.read( 315 + DriftSqlType.dateTime, 316 + data['${effectivePrefix}updated_at'], 317 + )!, 217 318 ); 218 319 } 219 320 ··· 286 387 return AccountsCompanion( 287 388 did: Value(did), 288 389 handle: Value(handle), 289 - displayName: displayName == null && nullToAbsent ? const Value.absent() : Value(displayName), 290 - service: service == null && nullToAbsent ? const Value.absent() : Value(service), 390 + displayName: displayName == null && nullToAbsent 391 + ? const Value.absent() 392 + : Value(displayName), 393 + service: service == null && nullToAbsent 394 + ? const Value.absent() 395 + : Value(service), 291 396 accessToken: Value(accessToken), 292 - refreshToken: refreshToken == null && nullToAbsent ? const Value.absent() : Value(refreshToken), 293 - dpopPublicKey: dpopPublicKey == null && nullToAbsent ? const Value.absent() : Value(dpopPublicKey), 294 - dpopPrivateKey: dpopPrivateKey == null && nullToAbsent ? const Value.absent() : Value(dpopPrivateKey), 295 - dpopNonce: dpopNonce == null && nullToAbsent ? const Value.absent() : Value(dpopNonce), 296 - expiresAt: expiresAt == null && nullToAbsent ? const Value.absent() : Value(expiresAt), 397 + refreshToken: refreshToken == null && nullToAbsent 398 + ? const Value.absent() 399 + : Value(refreshToken), 400 + dpopPublicKey: dpopPublicKey == null && nullToAbsent 401 + ? const Value.absent() 402 + : Value(dpopPublicKey), 403 + dpopPrivateKey: dpopPrivateKey == null && nullToAbsent 404 + ? const Value.absent() 405 + : Value(dpopPrivateKey), 406 + dpopNonce: dpopNonce == null && nullToAbsent 407 + ? const Value.absent() 408 + : Value(dpopNonce), 409 + expiresAt: expiresAt == null && nullToAbsent 410 + ? const Value.absent() 411 + : Value(expiresAt), 297 412 createdAt: Value(createdAt), 298 413 updatedAt: Value(updatedAt), 299 414 ); 300 415 } 301 416 302 - factory Account.fromJson(Map<String, dynamic> json, {ValueSerializer? serializer}) { 417 + factory Account.fromJson( 418 + Map<String, dynamic> json, { 419 + ValueSerializer? serializer, 420 + }) { 303 421 serializer ??= driftRuntimeOptions.defaultSerializer; 304 422 return Account( 305 423 did: serializer.fromJson<String>(json['did']), ··· 355 473 service: service.present ? service.value : this.service, 356 474 accessToken: accessToken ?? this.accessToken, 357 475 refreshToken: refreshToken.present ? refreshToken.value : this.refreshToken, 358 - dpopPublicKey: dpopPublicKey.present ? dpopPublicKey.value : this.dpopPublicKey, 359 - dpopPrivateKey: dpopPrivateKey.present ? dpopPrivateKey.value : this.dpopPrivateKey, 476 + dpopPublicKey: dpopPublicKey.present 477 + ? dpopPublicKey.value 478 + : this.dpopPublicKey, 479 + dpopPrivateKey: dpopPrivateKey.present 480 + ? dpopPrivateKey.value 481 + : this.dpopPrivateKey, 360 482 dpopNonce: dpopNonce.present ? dpopNonce.value : this.dpopNonce, 361 483 expiresAt: expiresAt.present ? expiresAt.value : this.expiresAt, 362 484 createdAt: createdAt ?? this.createdAt, ··· 366 488 return Account( 367 489 did: data.did.present ? data.did.value : this.did, 368 490 handle: data.handle.present ? data.handle.value : this.handle, 369 - displayName: data.displayName.present ? data.displayName.value : this.displayName, 491 + displayName: data.displayName.present 492 + ? data.displayName.value 493 + : this.displayName, 370 494 service: data.service.present ? data.service.value : this.service, 371 - accessToken: data.accessToken.present ? data.accessToken.value : this.accessToken, 372 - refreshToken: data.refreshToken.present ? data.refreshToken.value : this.refreshToken, 373 - dpopPublicKey: data.dpopPublicKey.present ? data.dpopPublicKey.value : this.dpopPublicKey, 374 - dpopPrivateKey: data.dpopPrivateKey.present ? data.dpopPrivateKey.value : this.dpopPrivateKey, 495 + accessToken: data.accessToken.present 496 + ? data.accessToken.value 497 + : this.accessToken, 498 + refreshToken: data.refreshToken.present 499 + ? data.refreshToken.value 500 + : this.refreshToken, 501 + dpopPublicKey: data.dpopPublicKey.present 502 + ? data.dpopPublicKey.value 503 + : this.dpopPublicKey, 504 + dpopPrivateKey: data.dpopPrivateKey.present 505 + ? data.dpopPrivateKey.value 506 + : this.dpopPrivateKey, 375 507 dpopNonce: data.dpopNonce.present ? data.dpopNonce.value : this.dpopNonce, 376 508 expiresAt: data.expiresAt.present ? data.expiresAt.value : this.expiresAt, 377 509 createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, ··· 607 739 } 608 740 } 609 741 610 - class $CachedProfilesTable extends CachedProfiles with TableInfo<$CachedProfilesTable, CachedProfile> { 742 + class $CachedProfilesTable extends CachedProfiles 743 + with TableInfo<$CachedProfilesTable, CachedProfile> { 611 744 @override 612 745 final GeneratedDatabase attachedDatabase; 613 746 final String? _alias; ··· 630 763 type: DriftSqlType.string, 631 764 requiredDuringInsert: true, 632 765 ); 633 - static const VerificationMeta _payloadMeta = const VerificationMeta('payload'); 766 + static const VerificationMeta _payloadMeta = const VerificationMeta( 767 + 'payload', 768 + ); 634 769 @override 635 770 late final GeneratedColumn<String> payload = GeneratedColumn<String>( 636 771 'payload', ··· 639 774 type: DriftSqlType.string, 640 775 requiredDuringInsert: true, 641 776 ); 642 - static const VerificationMeta _fetchedAtMeta = const VerificationMeta('fetchedAt'); 777 + static const VerificationMeta _fetchedAtMeta = const VerificationMeta( 778 + 'fetchedAt', 779 + ); 643 780 @override 644 781 late final GeneratedColumn<DateTime> fetchedAt = GeneratedColumn<DateTime>( 645 782 'fetched_at', ··· 657 794 String get actualTableName => $name; 658 795 static const String $name = 'cached_profiles'; 659 796 @override 660 - VerificationContext validateIntegrity(Insertable<CachedProfile> instance, {bool isInserting = false}) { 797 + VerificationContext validateIntegrity( 798 + Insertable<CachedProfile> instance, { 799 + bool isInserting = false, 800 + }) { 661 801 final context = VerificationContext(); 662 802 final data = instance.toColumns(true); 663 803 if (data.containsKey('did')) { 664 - context.handle(_didMeta, did.isAcceptableOrUnknown(data['did']!, _didMeta)); 804 + context.handle( 805 + _didMeta, 806 + did.isAcceptableOrUnknown(data['did']!, _didMeta), 807 + ); 665 808 } else if (isInserting) { 666 809 context.missing(_didMeta); 667 810 } 668 811 if (data.containsKey('handle')) { 669 - context.handle(_handleMeta, handle.isAcceptableOrUnknown(data['handle']!, _handleMeta)); 812 + context.handle( 813 + _handleMeta, 814 + handle.isAcceptableOrUnknown(data['handle']!, _handleMeta), 815 + ); 670 816 } else if (isInserting) { 671 817 context.missing(_handleMeta); 672 818 } 673 819 if (data.containsKey('payload')) { 674 - context.handle(_payloadMeta, payload.isAcceptableOrUnknown(data['payload']!, _payloadMeta)); 820 + context.handle( 821 + _payloadMeta, 822 + payload.isAcceptableOrUnknown(data['payload']!, _payloadMeta), 823 + ); 675 824 } else if (isInserting) { 676 825 context.missing(_payloadMeta); 677 826 } 678 827 if (data.containsKey('fetched_at')) { 679 - context.handle(_fetchedAtMeta, fetchedAt.isAcceptableOrUnknown(data['fetched_at']!, _fetchedAtMeta)); 828 + context.handle( 829 + _fetchedAtMeta, 830 + fetchedAt.isAcceptableOrUnknown(data['fetched_at']!, _fetchedAtMeta), 831 + ); 680 832 } 681 833 return context; 682 834 } ··· 687 839 CachedProfile map(Map<String, dynamic> data, {String? tablePrefix}) { 688 840 final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; 689 841 return CachedProfile( 690 - did: attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}did'])!, 691 - handle: attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}handle'])!, 692 - payload: attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}payload'])!, 693 - fetchedAt: attachedDatabase.typeMapping.read(DriftSqlType.dateTime, data['${effectivePrefix}fetched_at'])!, 842 + did: attachedDatabase.typeMapping.read( 843 + DriftSqlType.string, 844 + data['${effectivePrefix}did'], 845 + )!, 846 + handle: attachedDatabase.typeMapping.read( 847 + DriftSqlType.string, 848 + data['${effectivePrefix}handle'], 849 + )!, 850 + payload: attachedDatabase.typeMapping.read( 851 + DriftSqlType.string, 852 + data['${effectivePrefix}payload'], 853 + )!, 854 + fetchedAt: attachedDatabase.typeMapping.read( 855 + DriftSqlType.dateTime, 856 + data['${effectivePrefix}fetched_at'], 857 + )!, 694 858 ); 695 859 } 696 860 ··· 705 869 final String handle; 706 870 final String payload; 707 871 final DateTime fetchedAt; 708 - const CachedProfile({required this.did, required this.handle, required this.payload, required this.fetchedAt}); 872 + const CachedProfile({ 873 + required this.did, 874 + required this.handle, 875 + required this.payload, 876 + required this.fetchedAt, 877 + }); 709 878 @override 710 879 Map<String, Expression> toColumns(bool nullToAbsent) { 711 880 final map = <String, Expression>{}; ··· 725 894 ); 726 895 } 727 896 728 - factory CachedProfile.fromJson(Map<String, dynamic> json, {ValueSerializer? serializer}) { 897 + factory CachedProfile.fromJson( 898 + Map<String, dynamic> json, { 899 + ValueSerializer? serializer, 900 + }) { 729 901 serializer ??= driftRuntimeOptions.defaultSerializer; 730 902 return CachedProfile( 731 903 did: serializer.fromJson<String>(json['did']), ··· 745 917 }; 746 918 } 747 919 748 - CachedProfile copyWith({String? did, String? handle, String? payload, DateTime? fetchedAt}) => CachedProfile( 920 + CachedProfile copyWith({ 921 + String? did, 922 + String? handle, 923 + String? payload, 924 + DateTime? fetchedAt, 925 + }) => CachedProfile( 749 926 did: did ?? this.did, 750 927 handle: handle ?? this.handle, 751 928 payload: payload ?? this.payload, ··· 871 1048 } 872 1049 } 873 1050 874 - class $CachedPostsTable extends CachedPosts with TableInfo<$CachedPostsTable, CachedPost> { 1051 + class $CachedPostsTable extends CachedPosts 1052 + with TableInfo<$CachedPostsTable, CachedPost> { 875 1053 @override 876 1054 final GeneratedDatabase attachedDatabase; 877 1055 final String? _alias; ··· 885 1063 type: DriftSqlType.string, 886 1064 requiredDuringInsert: true, 887 1065 ); 888 - static const VerificationMeta _authorDidMeta = const VerificationMeta('authorDid'); 1066 + static const VerificationMeta _authorDidMeta = const VerificationMeta( 1067 + 'authorDid', 1068 + ); 889 1069 @override 890 1070 late final GeneratedColumn<String> authorDid = GeneratedColumn<String>( 891 1071 'author_did', ··· 894 1074 type: DriftSqlType.string, 895 1075 requiredDuringInsert: true, 896 1076 ); 897 - static const VerificationMeta _payloadMeta = const VerificationMeta('payload'); 1077 + static const VerificationMeta _payloadMeta = const VerificationMeta( 1078 + 'payload', 1079 + ); 898 1080 @override 899 1081 late final GeneratedColumn<String> payload = GeneratedColumn<String>( 900 1082 'payload', ··· 903 1085 type: DriftSqlType.string, 904 1086 requiredDuringInsert: true, 905 1087 ); 906 - static const VerificationMeta _createdAtMeta = const VerificationMeta('createdAt'); 1088 + static const VerificationMeta _createdAtMeta = const VerificationMeta( 1089 + 'createdAt', 1090 + ); 907 1091 @override 908 1092 late final GeneratedColumn<DateTime> createdAt = GeneratedColumn<DateTime>( 909 1093 'created_at', ··· 912 1096 type: DriftSqlType.dateTime, 913 1097 requiredDuringInsert: false, 914 1098 ); 915 - static const VerificationMeta _fetchedAtMeta = const VerificationMeta('fetchedAt'); 1099 + static const VerificationMeta _fetchedAtMeta = const VerificationMeta( 1100 + 'fetchedAt', 1101 + ); 916 1102 @override 917 1103 late final GeneratedColumn<DateTime> fetchedAt = GeneratedColumn<DateTime>( 918 1104 'fetched_at', ··· 923 1109 defaultValue: currentDateAndTime, 924 1110 ); 925 1111 @override 926 - List<GeneratedColumn> get $columns => [uri, authorDid, payload, createdAt, fetchedAt]; 1112 + List<GeneratedColumn> get $columns => [ 1113 + uri, 1114 + authorDid, 1115 + payload, 1116 + createdAt, 1117 + fetchedAt, 1118 + ]; 927 1119 @override 928 1120 String get aliasedName => _alias ?? actualTableName; 929 1121 @override 930 1122 String get actualTableName => $name; 931 1123 static const String $name = 'cached_posts'; 932 1124 @override 933 - VerificationContext validateIntegrity(Insertable<CachedPost> instance, {bool isInserting = false}) { 1125 + VerificationContext validateIntegrity( 1126 + Insertable<CachedPost> instance, { 1127 + bool isInserting = false, 1128 + }) { 934 1129 final context = VerificationContext(); 935 1130 final data = instance.toColumns(true); 936 1131 if (data.containsKey('uri')) { 937 - context.handle(_uriMeta, uri.isAcceptableOrUnknown(data['uri']!, _uriMeta)); 1132 + context.handle( 1133 + _uriMeta, 1134 + uri.isAcceptableOrUnknown(data['uri']!, _uriMeta), 1135 + ); 938 1136 } else if (isInserting) { 939 1137 context.missing(_uriMeta); 940 1138 } 941 1139 if (data.containsKey('author_did')) { 942 - context.handle(_authorDidMeta, authorDid.isAcceptableOrUnknown(data['author_did']!, _authorDidMeta)); 1140 + context.handle( 1141 + _authorDidMeta, 1142 + authorDid.isAcceptableOrUnknown(data['author_did']!, _authorDidMeta), 1143 + ); 943 1144 } else if (isInserting) { 944 1145 context.missing(_authorDidMeta); 945 1146 } 946 1147 if (data.containsKey('payload')) { 947 - context.handle(_payloadMeta, payload.isAcceptableOrUnknown(data['payload']!, _payloadMeta)); 1148 + context.handle( 1149 + _payloadMeta, 1150 + payload.isAcceptableOrUnknown(data['payload']!, _payloadMeta), 1151 + ); 948 1152 } else if (isInserting) { 949 1153 context.missing(_payloadMeta); 950 1154 } 951 1155 if (data.containsKey('created_at')) { 952 - context.handle(_createdAtMeta, createdAt.isAcceptableOrUnknown(data['created_at']!, _createdAtMeta)); 1156 + context.handle( 1157 + _createdAtMeta, 1158 + createdAt.isAcceptableOrUnknown(data['created_at']!, _createdAtMeta), 1159 + ); 953 1160 } 954 1161 if (data.containsKey('fetched_at')) { 955 - context.handle(_fetchedAtMeta, fetchedAt.isAcceptableOrUnknown(data['fetched_at']!, _fetchedAtMeta)); 1162 + context.handle( 1163 + _fetchedAtMeta, 1164 + fetchedAt.isAcceptableOrUnknown(data['fetched_at']!, _fetchedAtMeta), 1165 + ); 956 1166 } 957 1167 return context; 958 1168 } ··· 963 1173 CachedPost map(Map<String, dynamic> data, {String? tablePrefix}) { 964 1174 final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; 965 1175 return CachedPost( 966 - uri: attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}uri'])!, 967 - authorDid: attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}author_did'])!, 968 - payload: attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}payload'])!, 969 - createdAt: attachedDatabase.typeMapping.read(DriftSqlType.dateTime, data['${effectivePrefix}created_at']), 970 - fetchedAt: attachedDatabase.typeMapping.read(DriftSqlType.dateTime, data['${effectivePrefix}fetched_at'])!, 1176 + uri: attachedDatabase.typeMapping.read( 1177 + DriftSqlType.string, 1178 + data['${effectivePrefix}uri'], 1179 + )!, 1180 + authorDid: attachedDatabase.typeMapping.read( 1181 + DriftSqlType.string, 1182 + data['${effectivePrefix}author_did'], 1183 + )!, 1184 + payload: attachedDatabase.typeMapping.read( 1185 + DriftSqlType.string, 1186 + data['${effectivePrefix}payload'], 1187 + )!, 1188 + createdAt: attachedDatabase.typeMapping.read( 1189 + DriftSqlType.dateTime, 1190 + data['${effectivePrefix}created_at'], 1191 + ), 1192 + fetchedAt: attachedDatabase.typeMapping.read( 1193 + DriftSqlType.dateTime, 1194 + data['${effectivePrefix}fetched_at'], 1195 + )!, 971 1196 ); 972 1197 } 973 1198 ··· 1008 1233 uri: Value(uri), 1009 1234 authorDid: Value(authorDid), 1010 1235 payload: Value(payload), 1011 - createdAt: createdAt == null && nullToAbsent ? const Value.absent() : Value(createdAt), 1236 + createdAt: createdAt == null && nullToAbsent 1237 + ? const Value.absent() 1238 + : Value(createdAt), 1012 1239 fetchedAt: Value(fetchedAt), 1013 1240 ); 1014 1241 } 1015 1242 1016 - factory CachedPost.fromJson(Map<String, dynamic> json, {ValueSerializer? serializer}) { 1243 + factory CachedPost.fromJson( 1244 + Map<String, dynamic> json, { 1245 + ValueSerializer? serializer, 1246 + }) { 1017 1247 serializer ??= driftRuntimeOptions.defaultSerializer; 1018 1248 return CachedPost( 1019 1249 uri: serializer.fromJson<String>(json['uri']), ··· 1071 1301 } 1072 1302 1073 1303 @override 1074 - int get hashCode => Object.hash(uri, authorDid, payload, createdAt, fetchedAt); 1304 + int get hashCode => 1305 + Object.hash(uri, authorDid, payload, createdAt, fetchedAt); 1075 1306 @override 1076 1307 bool operator ==(Object other) => 1077 1308 identical(this, other) || ··· 1182 1413 } 1183 1414 } 1184 1415 1185 - class $SettingsTable extends Settings with TableInfo<$SettingsTable, SettingsEntry> { 1416 + class $SettingsTable extends Settings 1417 + with TableInfo<$SettingsTable, SettingsEntry> { 1186 1418 @override 1187 1419 final GeneratedDatabase attachedDatabase; 1188 1420 final String? _alias; ··· 1205 1437 type: DriftSqlType.string, 1206 1438 requiredDuringInsert: true, 1207 1439 ); 1208 - static const VerificationMeta _updatedAtMeta = const VerificationMeta('updatedAt'); 1440 + static const VerificationMeta _updatedAtMeta = const VerificationMeta( 1441 + 'updatedAt', 1442 + ); 1209 1443 @override 1210 1444 late final GeneratedColumn<DateTime> updatedAt = GeneratedColumn<DateTime>( 1211 1445 'updated_at', ··· 1223 1457 String get actualTableName => $name; 1224 1458 static const String $name = 'settings'; 1225 1459 @override 1226 - VerificationContext validateIntegrity(Insertable<SettingsEntry> instance, {bool isInserting = false}) { 1460 + VerificationContext validateIntegrity( 1461 + Insertable<SettingsEntry> instance, { 1462 + bool isInserting = false, 1463 + }) { 1227 1464 final context = VerificationContext(); 1228 1465 final data = instance.toColumns(true); 1229 1466 if (data.containsKey('key')) { 1230 - context.handle(_keyMeta, key.isAcceptableOrUnknown(data['key']!, _keyMeta)); 1467 + context.handle( 1468 + _keyMeta, 1469 + key.isAcceptableOrUnknown(data['key']!, _keyMeta), 1470 + ); 1231 1471 } else if (isInserting) { 1232 1472 context.missing(_keyMeta); 1233 1473 } 1234 1474 if (data.containsKey('value')) { 1235 - context.handle(_valueMeta, value.isAcceptableOrUnknown(data['value']!, _valueMeta)); 1475 + context.handle( 1476 + _valueMeta, 1477 + value.isAcceptableOrUnknown(data['value']!, _valueMeta), 1478 + ); 1236 1479 } else if (isInserting) { 1237 1480 context.missing(_valueMeta); 1238 1481 } 1239 1482 if (data.containsKey('updated_at')) { 1240 - context.handle(_updatedAtMeta, updatedAt.isAcceptableOrUnknown(data['updated_at']!, _updatedAtMeta)); 1483 + context.handle( 1484 + _updatedAtMeta, 1485 + updatedAt.isAcceptableOrUnknown(data['updated_at']!, _updatedAtMeta), 1486 + ); 1241 1487 } 1242 1488 return context; 1243 1489 } ··· 1248 1494 SettingsEntry map(Map<String, dynamic> data, {String? tablePrefix}) { 1249 1495 final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; 1250 1496 return SettingsEntry( 1251 - key: attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}key'])!, 1252 - value: attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}value'])!, 1253 - updatedAt: attachedDatabase.typeMapping.read(DriftSqlType.dateTime, data['${effectivePrefix}updated_at'])!, 1497 + key: attachedDatabase.typeMapping.read( 1498 + DriftSqlType.string, 1499 + data['${effectivePrefix}key'], 1500 + )!, 1501 + value: attachedDatabase.typeMapping.read( 1502 + DriftSqlType.string, 1503 + data['${effectivePrefix}value'], 1504 + )!, 1505 + updatedAt: attachedDatabase.typeMapping.read( 1506 + DriftSqlType.dateTime, 1507 + data['${effectivePrefix}updated_at'], 1508 + )!, 1254 1509 ); 1255 1510 } 1256 1511 ··· 1264 1519 final String key; 1265 1520 final String value; 1266 1521 final DateTime updatedAt; 1267 - const SettingsEntry({required this.key, required this.value, required this.updatedAt}); 1522 + const SettingsEntry({ 1523 + required this.key, 1524 + required this.value, 1525 + required this.updatedAt, 1526 + }); 1268 1527 @override 1269 1528 Map<String, Expression> toColumns(bool nullToAbsent) { 1270 1529 final map = <String, Expression>{}; ··· 1275 1534 } 1276 1535 1277 1536 SettingsCompanion toCompanion(bool nullToAbsent) { 1278 - return SettingsCompanion(key: Value(key), value: Value(value), updatedAt: Value(updatedAt)); 1537 + return SettingsCompanion( 1538 + key: Value(key), 1539 + value: Value(value), 1540 + updatedAt: Value(updatedAt), 1541 + ); 1279 1542 } 1280 1543 1281 - factory SettingsEntry.fromJson(Map<String, dynamic> json, {ValueSerializer? serializer}) { 1544 + factory SettingsEntry.fromJson( 1545 + Map<String, dynamic> json, { 1546 + ValueSerializer? serializer, 1547 + }) { 1282 1548 serializer ??= driftRuntimeOptions.defaultSerializer; 1283 1549 return SettingsEntry( 1284 1550 key: serializer.fromJson<String>(json['key']), ··· 1297 1563 } 1298 1564 1299 1565 SettingsEntry copyWith({String? key, String? value, DateTime? updatedAt}) => 1300 - SettingsEntry(key: key ?? this.key, value: value ?? this.value, updatedAt: updatedAt ?? this.updatedAt); 1566 + SettingsEntry( 1567 + key: key ?? this.key, 1568 + value: value ?? this.value, 1569 + updatedAt: updatedAt ?? this.updatedAt, 1570 + ); 1301 1571 SettingsEntry copyWithCompanion(SettingsCompanion data) { 1302 1572 return SettingsEntry( 1303 1573 key: data.key.present ? data.key.value : this.key, ··· 1411 1681 late final $CachedPostsTable cachedPosts = $CachedPostsTable(this); 1412 1682 late final $SettingsTable settings = $SettingsTable(this); 1413 1683 @override 1414 - Iterable<TableInfo<Table, Object?>> get allTables => allSchemaEntities.whereType<TableInfo<Table, Object?>>(); 1684 + Iterable<TableInfo<Table, Object?>> get allTables => 1685 + allSchemaEntities.whereType<TableInfo<Table, Object?>>(); 1415 1686 @override 1416 - List<DatabaseSchemaEntity> get allSchemaEntities => [accounts, cachedProfiles, cachedPosts, settings]; 1687 + List<DatabaseSchemaEntity> get allSchemaEntities => [ 1688 + accounts, 1689 + cachedProfiles, 1690 + cachedPosts, 1691 + settings, 1692 + ]; 1417 1693 } 1418 1694 1419 1695 typedef $$AccountsTableCreateCompanionBuilder = ··· 1449 1725 Value<int> rowid, 1450 1726 }); 1451 1727 1452 - class $$AccountsTableFilterComposer extends Composer<_$AppDatabase, $AccountsTable> { 1728 + class $$AccountsTableFilterComposer 1729 + extends Composer<_$AppDatabase, $AccountsTable> { 1453 1730 $$AccountsTableFilterComposer({ 1454 1731 required super.$db, 1455 1732 required super.$table, ··· 1457 1734 super.$addJoinBuilderToRootComposer, 1458 1735 super.$removeJoinBuilderFromRootComposer, 1459 1736 }); 1460 - ColumnFilters<String> get did => $composableBuilder(column: $table.did, builder: (column) => ColumnFilters(column)); 1737 + ColumnFilters<String> get did => $composableBuilder( 1738 + column: $table.did, 1739 + builder: (column) => ColumnFilters(column), 1740 + ); 1461 1741 1462 - ColumnFilters<String> get handle => 1463 - $composableBuilder(column: $table.handle, builder: (column) => ColumnFilters(column)); 1742 + ColumnFilters<String> get handle => $composableBuilder( 1743 + column: $table.handle, 1744 + builder: (column) => ColumnFilters(column), 1745 + ); 1464 1746 1465 - ColumnFilters<String> get displayName => 1466 - $composableBuilder(column: $table.displayName, builder: (column) => ColumnFilters(column)); 1747 + ColumnFilters<String> get displayName => $composableBuilder( 1748 + column: $table.displayName, 1749 + builder: (column) => ColumnFilters(column), 1750 + ); 1467 1751 1468 - ColumnFilters<String> get service => 1469 - $composableBuilder(column: $table.service, builder: (column) => ColumnFilters(column)); 1752 + ColumnFilters<String> get service => $composableBuilder( 1753 + column: $table.service, 1754 + builder: (column) => ColumnFilters(column), 1755 + ); 1470 1756 1471 - ColumnFilters<String> get accessToken => 1472 - $composableBuilder(column: $table.accessToken, builder: (column) => ColumnFilters(column)); 1757 + ColumnFilters<String> get accessToken => $composableBuilder( 1758 + column: $table.accessToken, 1759 + builder: (column) => ColumnFilters(column), 1760 + ); 1473 1761 1474 - ColumnFilters<String> get refreshToken => 1475 - $composableBuilder(column: $table.refreshToken, builder: (column) => ColumnFilters(column)); 1762 + ColumnFilters<String> get refreshToken => $composableBuilder( 1763 + column: $table.refreshToken, 1764 + builder: (column) => ColumnFilters(column), 1765 + ); 1476 1766 1477 - ColumnFilters<String> get dpopPublicKey => 1478 - $composableBuilder(column: $table.dpopPublicKey, builder: (column) => ColumnFilters(column)); 1767 + ColumnFilters<String> get dpopPublicKey => $composableBuilder( 1768 + column: $table.dpopPublicKey, 1769 + builder: (column) => ColumnFilters(column), 1770 + ); 1479 1771 1480 - ColumnFilters<String> get dpopPrivateKey => 1481 - $composableBuilder(column: $table.dpopPrivateKey, builder: (column) => ColumnFilters(column)); 1772 + ColumnFilters<String> get dpopPrivateKey => $composableBuilder( 1773 + column: $table.dpopPrivateKey, 1774 + builder: (column) => ColumnFilters(column), 1775 + ); 1482 1776 1483 - ColumnFilters<String> get dpopNonce => 1484 - $composableBuilder(column: $table.dpopNonce, builder: (column) => ColumnFilters(column)); 1777 + ColumnFilters<String> get dpopNonce => $composableBuilder( 1778 + column: $table.dpopNonce, 1779 + builder: (column) => ColumnFilters(column), 1780 + ); 1485 1781 1486 - ColumnFilters<DateTime> get expiresAt => 1487 - $composableBuilder(column: $table.expiresAt, builder: (column) => ColumnFilters(column)); 1782 + ColumnFilters<DateTime> get expiresAt => $composableBuilder( 1783 + column: $table.expiresAt, 1784 + builder: (column) => ColumnFilters(column), 1785 + ); 1488 1786 1489 - ColumnFilters<DateTime> get createdAt => 1490 - $composableBuilder(column: $table.createdAt, builder: (column) => ColumnFilters(column)); 1787 + ColumnFilters<DateTime> get createdAt => $composableBuilder( 1788 + column: $table.createdAt, 1789 + builder: (column) => ColumnFilters(column), 1790 + ); 1491 1791 1492 - ColumnFilters<DateTime> get updatedAt => 1493 - $composableBuilder(column: $table.updatedAt, builder: (column) => ColumnFilters(column)); 1792 + ColumnFilters<DateTime> get updatedAt => $composableBuilder( 1793 + column: $table.updatedAt, 1794 + builder: (column) => ColumnFilters(column), 1795 + ); 1494 1796 } 1495 1797 1496 - class $$AccountsTableOrderingComposer extends Composer<_$AppDatabase, $AccountsTable> { 1798 + class $$AccountsTableOrderingComposer 1799 + extends Composer<_$AppDatabase, $AccountsTable> { 1497 1800 $$AccountsTableOrderingComposer({ 1498 1801 required super.$db, 1499 1802 required super.$table, ··· 1501 1804 super.$addJoinBuilderToRootComposer, 1502 1805 super.$removeJoinBuilderFromRootComposer, 1503 1806 }); 1504 - ColumnOrderings<String> get did => 1505 - $composableBuilder(column: $table.did, builder: (column) => ColumnOrderings(column)); 1807 + ColumnOrderings<String> get did => $composableBuilder( 1808 + column: $table.did, 1809 + builder: (column) => ColumnOrderings(column), 1810 + ); 1506 1811 1507 - ColumnOrderings<String> get handle => 1508 - $composableBuilder(column: $table.handle, builder: (column) => ColumnOrderings(column)); 1812 + ColumnOrderings<String> get handle => $composableBuilder( 1813 + column: $table.handle, 1814 + builder: (column) => ColumnOrderings(column), 1815 + ); 1509 1816 1510 - ColumnOrderings<String> get displayName => 1511 - $composableBuilder(column: $table.displayName, builder: (column) => ColumnOrderings(column)); 1817 + ColumnOrderings<String> get displayName => $composableBuilder( 1818 + column: $table.displayName, 1819 + builder: (column) => ColumnOrderings(column), 1820 + ); 1512 1821 1513 - ColumnOrderings<String> get service => 1514 - $composableBuilder(column: $table.service, builder: (column) => ColumnOrderings(column)); 1822 + ColumnOrderings<String> get service => $composableBuilder( 1823 + column: $table.service, 1824 + builder: (column) => ColumnOrderings(column), 1825 + ); 1515 1826 1516 - ColumnOrderings<String> get accessToken => 1517 - $composableBuilder(column: $table.accessToken, builder: (column) => ColumnOrderings(column)); 1827 + ColumnOrderings<String> get accessToken => $composableBuilder( 1828 + column: $table.accessToken, 1829 + builder: (column) => ColumnOrderings(column), 1830 + ); 1518 1831 1519 - ColumnOrderings<String> get refreshToken => 1520 - $composableBuilder(column: $table.refreshToken, builder: (column) => ColumnOrderings(column)); 1832 + ColumnOrderings<String> get refreshToken => $composableBuilder( 1833 + column: $table.refreshToken, 1834 + builder: (column) => ColumnOrderings(column), 1835 + ); 1521 1836 1522 - ColumnOrderings<String> get dpopPublicKey => 1523 - $composableBuilder(column: $table.dpopPublicKey, builder: (column) => ColumnOrderings(column)); 1837 + ColumnOrderings<String> get dpopPublicKey => $composableBuilder( 1838 + column: $table.dpopPublicKey, 1839 + builder: (column) => ColumnOrderings(column), 1840 + ); 1524 1841 1525 - ColumnOrderings<String> get dpopPrivateKey => 1526 - $composableBuilder(column: $table.dpopPrivateKey, builder: (column) => ColumnOrderings(column)); 1842 + ColumnOrderings<String> get dpopPrivateKey => $composableBuilder( 1843 + column: $table.dpopPrivateKey, 1844 + builder: (column) => ColumnOrderings(column), 1845 + ); 1527 1846 1528 - ColumnOrderings<String> get dpopNonce => 1529 - $composableBuilder(column: $table.dpopNonce, builder: (column) => ColumnOrderings(column)); 1847 + ColumnOrderings<String> get dpopNonce => $composableBuilder( 1848 + column: $table.dpopNonce, 1849 + builder: (column) => ColumnOrderings(column), 1850 + ); 1530 1851 1531 - ColumnOrderings<DateTime> get expiresAt => 1532 - $composableBuilder(column: $table.expiresAt, builder: (column) => ColumnOrderings(column)); 1852 + ColumnOrderings<DateTime> get expiresAt => $composableBuilder( 1853 + column: $table.expiresAt, 1854 + builder: (column) => ColumnOrderings(column), 1855 + ); 1533 1856 1534 - ColumnOrderings<DateTime> get createdAt => 1535 - $composableBuilder(column: $table.createdAt, builder: (column) => ColumnOrderings(column)); 1857 + ColumnOrderings<DateTime> get createdAt => $composableBuilder( 1858 + column: $table.createdAt, 1859 + builder: (column) => ColumnOrderings(column), 1860 + ); 1536 1861 1537 - ColumnOrderings<DateTime> get updatedAt => 1538 - $composableBuilder(column: $table.updatedAt, builder: (column) => ColumnOrderings(column)); 1862 + ColumnOrderings<DateTime> get updatedAt => $composableBuilder( 1863 + column: $table.updatedAt, 1864 + builder: (column) => ColumnOrderings(column), 1865 + ); 1539 1866 } 1540 1867 1541 - class $$AccountsTableAnnotationComposer extends Composer<_$AppDatabase, $AccountsTable> { 1868 + class $$AccountsTableAnnotationComposer 1869 + extends Composer<_$AppDatabase, $AccountsTable> { 1542 1870 $$AccountsTableAnnotationComposer({ 1543 1871 required super.$db, 1544 1872 required super.$table, ··· 1546 1874 super.$addJoinBuilderToRootComposer, 1547 1875 super.$removeJoinBuilderFromRootComposer, 1548 1876 }); 1549 - GeneratedColumn<String> get did => $composableBuilder(column: $table.did, builder: (column) => column); 1877 + GeneratedColumn<String> get did => 1878 + $composableBuilder(column: $table.did, builder: (column) => column); 1550 1879 1551 - GeneratedColumn<String> get handle => $composableBuilder(column: $table.handle, builder: (column) => column); 1880 + GeneratedColumn<String> get handle => 1881 + $composableBuilder(column: $table.handle, builder: (column) => column); 1552 1882 1553 - GeneratedColumn<String> get displayName => 1554 - $composableBuilder(column: $table.displayName, builder: (column) => column); 1883 + GeneratedColumn<String> get displayName => $composableBuilder( 1884 + column: $table.displayName, 1885 + builder: (column) => column, 1886 + ); 1555 1887 1556 - GeneratedColumn<String> get service => $composableBuilder(column: $table.service, builder: (column) => column); 1888 + GeneratedColumn<String> get service => 1889 + $composableBuilder(column: $table.service, builder: (column) => column); 1557 1890 1558 - GeneratedColumn<String> get accessToken => 1559 - $composableBuilder(column: $table.accessToken, builder: (column) => column); 1891 + GeneratedColumn<String> get accessToken => $composableBuilder( 1892 + column: $table.accessToken, 1893 + builder: (column) => column, 1894 + ); 1560 1895 1561 - GeneratedColumn<String> get refreshToken => 1562 - $composableBuilder(column: $table.refreshToken, builder: (column) => column); 1896 + GeneratedColumn<String> get refreshToken => $composableBuilder( 1897 + column: $table.refreshToken, 1898 + builder: (column) => column, 1899 + ); 1563 1900 1564 - GeneratedColumn<String> get dpopPublicKey => 1565 - $composableBuilder(column: $table.dpopPublicKey, builder: (column) => column); 1901 + GeneratedColumn<String> get dpopPublicKey => $composableBuilder( 1902 + column: $table.dpopPublicKey, 1903 + builder: (column) => column, 1904 + ); 1566 1905 1567 - GeneratedColumn<String> get dpopPrivateKey => 1568 - $composableBuilder(column: $table.dpopPrivateKey, builder: (column) => column); 1906 + GeneratedColumn<String> get dpopPrivateKey => $composableBuilder( 1907 + column: $table.dpopPrivateKey, 1908 + builder: (column) => column, 1909 + ); 1569 1910 1570 - GeneratedColumn<String> get dpopNonce => $composableBuilder(column: $table.dpopNonce, builder: (column) => column); 1911 + GeneratedColumn<String> get dpopNonce => 1912 + $composableBuilder(column: $table.dpopNonce, builder: (column) => column); 1571 1913 1572 - GeneratedColumn<DateTime> get expiresAt => $composableBuilder(column: $table.expiresAt, builder: (column) => column); 1914 + GeneratedColumn<DateTime> get expiresAt => 1915 + $composableBuilder(column: $table.expiresAt, builder: (column) => column); 1573 1916 1574 - GeneratedColumn<DateTime> get createdAt => $composableBuilder(column: $table.createdAt, builder: (column) => column); 1917 + GeneratedColumn<DateTime> get createdAt => 1918 + $composableBuilder(column: $table.createdAt, builder: (column) => column); 1575 1919 1576 - GeneratedColumn<DateTime> get updatedAt => $composableBuilder(column: $table.updatedAt, builder: (column) => column); 1920 + GeneratedColumn<DateTime> get updatedAt => 1921 + $composableBuilder(column: $table.updatedAt, builder: (column) => column); 1577 1922 } 1578 1923 1579 1924 class $$AccountsTableTableManager ··· 1596 1941 TableManagerState( 1597 1942 db: db, 1598 1943 table: table, 1599 - createFilteringComposer: () => $$AccountsTableFilterComposer($db: db, $table: table), 1600 - createOrderingComposer: () => $$AccountsTableOrderingComposer($db: db, $table: table), 1601 - createComputedFieldComposer: () => $$AccountsTableAnnotationComposer($db: db, $table: table), 1944 + createFilteringComposer: () => 1945 + $$AccountsTableFilterComposer($db: db, $table: table), 1946 + createOrderingComposer: () => 1947 + $$AccountsTableOrderingComposer($db: db, $table: table), 1948 + createComputedFieldComposer: () => 1949 + $$AccountsTableAnnotationComposer($db: db, $table: table), 1602 1950 updateCompanionCallback: 1603 1951 ({ 1604 1952 Value<String> did = const Value.absent(), ··· 1659 2007 updatedAt: updatedAt, 1660 2008 rowid: rowid, 1661 2009 ), 1662 - withReferenceMapper: (p0) => p0.map((e) => (e.readTable(table), BaseReferences(db, table, e))).toList(), 2010 + withReferenceMapper: (p0) => p0 2011 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) 2012 + .toList(), 1663 2013 prefetchHooksCallback: null, 1664 2014 ), 1665 2015 ); ··· 1696 2046 Value<int> rowid, 1697 2047 }); 1698 2048 1699 - class $$CachedProfilesTableFilterComposer extends Composer<_$AppDatabase, $CachedProfilesTable> { 2049 + class $$CachedProfilesTableFilterComposer 2050 + extends Composer<_$AppDatabase, $CachedProfilesTable> { 1700 2051 $$CachedProfilesTableFilterComposer({ 1701 2052 required super.$db, 1702 2053 required super.$table, ··· 1704 2055 super.$addJoinBuilderToRootComposer, 1705 2056 super.$removeJoinBuilderFromRootComposer, 1706 2057 }); 1707 - ColumnFilters<String> get did => $composableBuilder(column: $table.did, builder: (column) => ColumnFilters(column)); 2058 + ColumnFilters<String> get did => $composableBuilder( 2059 + column: $table.did, 2060 + builder: (column) => ColumnFilters(column), 2061 + ); 1708 2062 1709 - ColumnFilters<String> get handle => 1710 - $composableBuilder(column: $table.handle, builder: (column) => ColumnFilters(column)); 2063 + ColumnFilters<String> get handle => $composableBuilder( 2064 + column: $table.handle, 2065 + builder: (column) => ColumnFilters(column), 2066 + ); 1711 2067 1712 - ColumnFilters<String> get payload => 1713 - $composableBuilder(column: $table.payload, builder: (column) => ColumnFilters(column)); 2068 + ColumnFilters<String> get payload => $composableBuilder( 2069 + column: $table.payload, 2070 + builder: (column) => ColumnFilters(column), 2071 + ); 1714 2072 1715 - ColumnFilters<DateTime> get fetchedAt => 1716 - $composableBuilder(column: $table.fetchedAt, builder: (column) => ColumnFilters(column)); 2073 + ColumnFilters<DateTime> get fetchedAt => $composableBuilder( 2074 + column: $table.fetchedAt, 2075 + builder: (column) => ColumnFilters(column), 2076 + ); 1717 2077 } 1718 2078 1719 - class $$CachedProfilesTableOrderingComposer extends Composer<_$AppDatabase, $CachedProfilesTable> { 2079 + class $$CachedProfilesTableOrderingComposer 2080 + extends Composer<_$AppDatabase, $CachedProfilesTable> { 1720 2081 $$CachedProfilesTableOrderingComposer({ 1721 2082 required super.$db, 1722 2083 required super.$table, ··· 1724 2085 super.$addJoinBuilderToRootComposer, 1725 2086 super.$removeJoinBuilderFromRootComposer, 1726 2087 }); 1727 - ColumnOrderings<String> get did => 1728 - $composableBuilder(column: $table.did, builder: (column) => ColumnOrderings(column)); 2088 + ColumnOrderings<String> get did => $composableBuilder( 2089 + column: $table.did, 2090 + builder: (column) => ColumnOrderings(column), 2091 + ); 1729 2092 1730 - ColumnOrderings<String> get handle => 1731 - $composableBuilder(column: $table.handle, builder: (column) => ColumnOrderings(column)); 2093 + ColumnOrderings<String> get handle => $composableBuilder( 2094 + column: $table.handle, 2095 + builder: (column) => ColumnOrderings(column), 2096 + ); 1732 2097 1733 - ColumnOrderings<String> get payload => 1734 - $composableBuilder(column: $table.payload, builder: (column) => ColumnOrderings(column)); 2098 + ColumnOrderings<String> get payload => $composableBuilder( 2099 + column: $table.payload, 2100 + builder: (column) => ColumnOrderings(column), 2101 + ); 1735 2102 1736 - ColumnOrderings<DateTime> get fetchedAt => 1737 - $composableBuilder(column: $table.fetchedAt, builder: (column) => ColumnOrderings(column)); 2103 + ColumnOrderings<DateTime> get fetchedAt => $composableBuilder( 2104 + column: $table.fetchedAt, 2105 + builder: (column) => ColumnOrderings(column), 2106 + ); 1738 2107 } 1739 2108 1740 - class $$CachedProfilesTableAnnotationComposer extends Composer<_$AppDatabase, $CachedProfilesTable> { 2109 + class $$CachedProfilesTableAnnotationComposer 2110 + extends Composer<_$AppDatabase, $CachedProfilesTable> { 1741 2111 $$CachedProfilesTableAnnotationComposer({ 1742 2112 required super.$db, 1743 2113 required super.$table, ··· 1745 2115 super.$addJoinBuilderToRootComposer, 1746 2116 super.$removeJoinBuilderFromRootComposer, 1747 2117 }); 1748 - GeneratedColumn<String> get did => $composableBuilder(column: $table.did, builder: (column) => column); 2118 + GeneratedColumn<String> get did => 2119 + $composableBuilder(column: $table.did, builder: (column) => column); 1749 2120 1750 - GeneratedColumn<String> get handle => $composableBuilder(column: $table.handle, builder: (column) => column); 2121 + GeneratedColumn<String> get handle => 2122 + $composableBuilder(column: $table.handle, builder: (column) => column); 1751 2123 1752 - GeneratedColumn<String> get payload => $composableBuilder(column: $table.payload, builder: (column) => column); 2124 + GeneratedColumn<String> get payload => 2125 + $composableBuilder(column: $table.payload, builder: (column) => column); 1753 2126 1754 - GeneratedColumn<DateTime> get fetchedAt => $composableBuilder(column: $table.fetchedAt, builder: (column) => column); 2127 + GeneratedColumn<DateTime> get fetchedAt => 2128 + $composableBuilder(column: $table.fetchedAt, builder: (column) => column); 1755 2129 } 1756 2130 1757 2131 class $$CachedProfilesTableTableManager ··· 1765 2139 $$CachedProfilesTableAnnotationComposer, 1766 2140 $$CachedProfilesTableCreateCompanionBuilder, 1767 2141 $$CachedProfilesTableUpdateCompanionBuilder, 1768 - (CachedProfile, BaseReferences<_$AppDatabase, $CachedProfilesTable, CachedProfile>), 2142 + ( 2143 + CachedProfile, 2144 + BaseReferences<_$AppDatabase, $CachedProfilesTable, CachedProfile>, 2145 + ), 1769 2146 CachedProfile, 1770 2147 PrefetchHooks Function() 1771 2148 > { 1772 - $$CachedProfilesTableTableManager(_$AppDatabase db, $CachedProfilesTable table) 1773 - : super( 2149 + $$CachedProfilesTableTableManager( 2150 + _$AppDatabase db, 2151 + $CachedProfilesTable table, 2152 + ) : super( 1774 2153 TableManagerState( 1775 2154 db: db, 1776 2155 table: table, 1777 - createFilteringComposer: () => $$CachedProfilesTableFilterComposer($db: db, $table: table), 1778 - createOrderingComposer: () => $$CachedProfilesTableOrderingComposer($db: db, $table: table), 1779 - createComputedFieldComposer: () => $$CachedProfilesTableAnnotationComposer($db: db, $table: table), 2156 + createFilteringComposer: () => 2157 + $$CachedProfilesTableFilterComposer($db: db, $table: table), 2158 + createOrderingComposer: () => 2159 + $$CachedProfilesTableOrderingComposer($db: db, $table: table), 2160 + createComputedFieldComposer: () => 2161 + $$CachedProfilesTableAnnotationComposer($db: db, $table: table), 1780 2162 updateCompanionCallback: 1781 2163 ({ 1782 2164 Value<String> did = const Value.absent(), ··· 1805 2187 fetchedAt: fetchedAt, 1806 2188 rowid: rowid, 1807 2189 ), 1808 - withReferenceMapper: (p0) => p0.map((e) => (e.readTable(table), BaseReferences(db, table, e))).toList(), 2190 + withReferenceMapper: (p0) => p0 2191 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) 2192 + .toList(), 1809 2193 prefetchHooksCallback: null, 1810 2194 ), 1811 2195 ); ··· 1821 2205 $$CachedProfilesTableAnnotationComposer, 1822 2206 $$CachedProfilesTableCreateCompanionBuilder, 1823 2207 $$CachedProfilesTableUpdateCompanionBuilder, 1824 - (CachedProfile, BaseReferences<_$AppDatabase, $CachedProfilesTable, CachedProfile>), 2208 + ( 2209 + CachedProfile, 2210 + BaseReferences<_$AppDatabase, $CachedProfilesTable, CachedProfile>, 2211 + ), 1825 2212 CachedProfile, 1826 2213 PrefetchHooks Function() 1827 2214 >; ··· 1844 2231 Value<int> rowid, 1845 2232 }); 1846 2233 1847 - class $$CachedPostsTableFilterComposer extends Composer<_$AppDatabase, $CachedPostsTable> { 2234 + class $$CachedPostsTableFilterComposer 2235 + extends Composer<_$AppDatabase, $CachedPostsTable> { 1848 2236 $$CachedPostsTableFilterComposer({ 1849 2237 required super.$db, 1850 2238 required super.$table, ··· 1852 2240 super.$addJoinBuilderToRootComposer, 1853 2241 super.$removeJoinBuilderFromRootComposer, 1854 2242 }); 1855 - ColumnFilters<String> get uri => $composableBuilder(column: $table.uri, builder: (column) => ColumnFilters(column)); 2243 + ColumnFilters<String> get uri => $composableBuilder( 2244 + column: $table.uri, 2245 + builder: (column) => ColumnFilters(column), 2246 + ); 1856 2247 1857 - ColumnFilters<String> get authorDid => 1858 - $composableBuilder(column: $table.authorDid, builder: (column) => ColumnFilters(column)); 2248 + ColumnFilters<String> get authorDid => $composableBuilder( 2249 + column: $table.authorDid, 2250 + builder: (column) => ColumnFilters(column), 2251 + ); 1859 2252 1860 - ColumnFilters<String> get payload => 1861 - $composableBuilder(column: $table.payload, builder: (column) => ColumnFilters(column)); 2253 + ColumnFilters<String> get payload => $composableBuilder( 2254 + column: $table.payload, 2255 + builder: (column) => ColumnFilters(column), 2256 + ); 1862 2257 1863 - ColumnFilters<DateTime> get createdAt => 1864 - $composableBuilder(column: $table.createdAt, builder: (column) => ColumnFilters(column)); 2258 + ColumnFilters<DateTime> get createdAt => $composableBuilder( 2259 + column: $table.createdAt, 2260 + builder: (column) => ColumnFilters(column), 2261 + ); 1865 2262 1866 - ColumnFilters<DateTime> get fetchedAt => 1867 - $composableBuilder(column: $table.fetchedAt, builder: (column) => ColumnFilters(column)); 2263 + ColumnFilters<DateTime> get fetchedAt => $composableBuilder( 2264 + column: $table.fetchedAt, 2265 + builder: (column) => ColumnFilters(column), 2266 + ); 1868 2267 } 1869 2268 1870 - class $$CachedPostsTableOrderingComposer extends Composer<_$AppDatabase, $CachedPostsTable> { 2269 + class $$CachedPostsTableOrderingComposer 2270 + extends Composer<_$AppDatabase, $CachedPostsTable> { 1871 2271 $$CachedPostsTableOrderingComposer({ 1872 2272 required super.$db, 1873 2273 required super.$table, ··· 1875 2275 super.$addJoinBuilderToRootComposer, 1876 2276 super.$removeJoinBuilderFromRootComposer, 1877 2277 }); 1878 - ColumnOrderings<String> get uri => 1879 - $composableBuilder(column: $table.uri, builder: (column) => ColumnOrderings(column)); 2278 + ColumnOrderings<String> get uri => $composableBuilder( 2279 + column: $table.uri, 2280 + builder: (column) => ColumnOrderings(column), 2281 + ); 1880 2282 1881 - ColumnOrderings<String> get authorDid => 1882 - $composableBuilder(column: $table.authorDid, builder: (column) => ColumnOrderings(column)); 2283 + ColumnOrderings<String> get authorDid => $composableBuilder( 2284 + column: $table.authorDid, 2285 + builder: (column) => ColumnOrderings(column), 2286 + ); 1883 2287 1884 - ColumnOrderings<String> get payload => 1885 - $composableBuilder(column: $table.payload, builder: (column) => ColumnOrderings(column)); 2288 + ColumnOrderings<String> get payload => $composableBuilder( 2289 + column: $table.payload, 2290 + builder: (column) => ColumnOrderings(column), 2291 + ); 1886 2292 1887 - ColumnOrderings<DateTime> get createdAt => 1888 - $composableBuilder(column: $table.createdAt, builder: (column) => ColumnOrderings(column)); 2293 + ColumnOrderings<DateTime> get createdAt => $composableBuilder( 2294 + column: $table.createdAt, 2295 + builder: (column) => ColumnOrderings(column), 2296 + ); 1889 2297 1890 - ColumnOrderings<DateTime> get fetchedAt => 1891 - $composableBuilder(column: $table.fetchedAt, builder: (column) => ColumnOrderings(column)); 2298 + ColumnOrderings<DateTime> get fetchedAt => $composableBuilder( 2299 + column: $table.fetchedAt, 2300 + builder: (column) => ColumnOrderings(column), 2301 + ); 1892 2302 } 1893 2303 1894 - class $$CachedPostsTableAnnotationComposer extends Composer<_$AppDatabase, $CachedPostsTable> { 2304 + class $$CachedPostsTableAnnotationComposer 2305 + extends Composer<_$AppDatabase, $CachedPostsTable> { 1895 2306 $$CachedPostsTableAnnotationComposer({ 1896 2307 required super.$db, 1897 2308 required super.$table, ··· 1899 2310 super.$addJoinBuilderToRootComposer, 1900 2311 super.$removeJoinBuilderFromRootComposer, 1901 2312 }); 1902 - GeneratedColumn<String> get uri => $composableBuilder(column: $table.uri, builder: (column) => column); 2313 + GeneratedColumn<String> get uri => 2314 + $composableBuilder(column: $table.uri, builder: (column) => column); 1903 2315 1904 - GeneratedColumn<String> get authorDid => $composableBuilder(column: $table.authorDid, builder: (column) => column); 2316 + GeneratedColumn<String> get authorDid => 2317 + $composableBuilder(column: $table.authorDid, builder: (column) => column); 1905 2318 1906 - GeneratedColumn<String> get payload => $composableBuilder(column: $table.payload, builder: (column) => column); 2319 + GeneratedColumn<String> get payload => 2320 + $composableBuilder(column: $table.payload, builder: (column) => column); 1907 2321 1908 - GeneratedColumn<DateTime> get createdAt => $composableBuilder(column: $table.createdAt, builder: (column) => column); 2322 + GeneratedColumn<DateTime> get createdAt => 2323 + $composableBuilder(column: $table.createdAt, builder: (column) => column); 1909 2324 1910 - GeneratedColumn<DateTime> get fetchedAt => $composableBuilder(column: $table.fetchedAt, builder: (column) => column); 2325 + GeneratedColumn<DateTime> get fetchedAt => 2326 + $composableBuilder(column: $table.fetchedAt, builder: (column) => column); 1911 2327 } 1912 2328 1913 2329 class $$CachedPostsTableTableManager ··· 1921 2337 $$CachedPostsTableAnnotationComposer, 1922 2338 $$CachedPostsTableCreateCompanionBuilder, 1923 2339 $$CachedPostsTableUpdateCompanionBuilder, 1924 - (CachedPost, BaseReferences<_$AppDatabase, $CachedPostsTable, CachedPost>), 2340 + ( 2341 + CachedPost, 2342 + BaseReferences<_$AppDatabase, $CachedPostsTable, CachedPost>, 2343 + ), 1925 2344 CachedPost, 1926 2345 PrefetchHooks Function() 1927 2346 > { ··· 1930 2349 TableManagerState( 1931 2350 db: db, 1932 2351 table: table, 1933 - createFilteringComposer: () => $$CachedPostsTableFilterComposer($db: db, $table: table), 1934 - createOrderingComposer: () => $$CachedPostsTableOrderingComposer($db: db, $table: table), 1935 - createComputedFieldComposer: () => $$CachedPostsTableAnnotationComposer($db: db, $table: table), 2352 + createFilteringComposer: () => 2353 + $$CachedPostsTableFilterComposer($db: db, $table: table), 2354 + createOrderingComposer: () => 2355 + $$CachedPostsTableOrderingComposer($db: db, $table: table), 2356 + createComputedFieldComposer: () => 2357 + $$CachedPostsTableAnnotationComposer($db: db, $table: table), 1936 2358 updateCompanionCallback: 1937 2359 ({ 1938 2360 Value<String> uri = const Value.absent(), ··· 1965 2387 fetchedAt: fetchedAt, 1966 2388 rowid: rowid, 1967 2389 ), 1968 - withReferenceMapper: (p0) => p0.map((e) => (e.readTable(table), BaseReferences(db, table, e))).toList(), 2390 + withReferenceMapper: (p0) => p0 2391 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) 2392 + .toList(), 1969 2393 prefetchHooksCallback: null, 1970 2394 ), 1971 2395 ); ··· 1981 2405 $$CachedPostsTableAnnotationComposer, 1982 2406 $$CachedPostsTableCreateCompanionBuilder, 1983 2407 $$CachedPostsTableUpdateCompanionBuilder, 1984 - (CachedPost, BaseReferences<_$AppDatabase, $CachedPostsTable, CachedPost>), 2408 + ( 2409 + CachedPost, 2410 + BaseReferences<_$AppDatabase, $CachedPostsTable, CachedPost>, 2411 + ), 1985 2412 CachedPost, 1986 2413 PrefetchHooks Function() 1987 2414 >; ··· 1993 2420 Value<int> rowid, 1994 2421 }); 1995 2422 typedef $$SettingsTableUpdateCompanionBuilder = 1996 - SettingsCompanion Function({Value<String> key, Value<String> value, Value<DateTime> updatedAt, Value<int> rowid}); 2423 + SettingsCompanion Function({ 2424 + Value<String> key, 2425 + Value<String> value, 2426 + Value<DateTime> updatedAt, 2427 + Value<int> rowid, 2428 + }); 1997 2429 1998 - class $$SettingsTableFilterComposer extends Composer<_$AppDatabase, $SettingsTable> { 2430 + class $$SettingsTableFilterComposer 2431 + extends Composer<_$AppDatabase, $SettingsTable> { 1999 2432 $$SettingsTableFilterComposer({ 2000 2433 required super.$db, 2001 2434 required super.$table, ··· 2003 2436 super.$addJoinBuilderToRootComposer, 2004 2437 super.$removeJoinBuilderFromRootComposer, 2005 2438 }); 2006 - ColumnFilters<String> get key => $composableBuilder(column: $table.key, builder: (column) => ColumnFilters(column)); 2439 + ColumnFilters<String> get key => $composableBuilder( 2440 + column: $table.key, 2441 + builder: (column) => ColumnFilters(column), 2442 + ); 2007 2443 2008 - ColumnFilters<String> get value => 2009 - $composableBuilder(column: $table.value, builder: (column) => ColumnFilters(column)); 2444 + ColumnFilters<String> get value => $composableBuilder( 2445 + column: $table.value, 2446 + builder: (column) => ColumnFilters(column), 2447 + ); 2010 2448 2011 - ColumnFilters<DateTime> get updatedAt => 2012 - $composableBuilder(column: $table.updatedAt, builder: (column) => ColumnFilters(column)); 2449 + ColumnFilters<DateTime> get updatedAt => $composableBuilder( 2450 + column: $table.updatedAt, 2451 + builder: (column) => ColumnFilters(column), 2452 + ); 2013 2453 } 2014 2454 2015 - class $$SettingsTableOrderingComposer extends Composer<_$AppDatabase, $SettingsTable> { 2455 + class $$SettingsTableOrderingComposer 2456 + extends Composer<_$AppDatabase, $SettingsTable> { 2016 2457 $$SettingsTableOrderingComposer({ 2017 2458 required super.$db, 2018 2459 required super.$table, ··· 2020 2461 super.$addJoinBuilderToRootComposer, 2021 2462 super.$removeJoinBuilderFromRootComposer, 2022 2463 }); 2023 - ColumnOrderings<String> get key => 2024 - $composableBuilder(column: $table.key, builder: (column) => ColumnOrderings(column)); 2464 + ColumnOrderings<String> get key => $composableBuilder( 2465 + column: $table.key, 2466 + builder: (column) => ColumnOrderings(column), 2467 + ); 2025 2468 2026 - ColumnOrderings<String> get value => 2027 - $composableBuilder(column: $table.value, builder: (column) => ColumnOrderings(column)); 2469 + ColumnOrderings<String> get value => $composableBuilder( 2470 + column: $table.value, 2471 + builder: (column) => ColumnOrderings(column), 2472 + ); 2028 2473 2029 - ColumnOrderings<DateTime> get updatedAt => 2030 - $composableBuilder(column: $table.updatedAt, builder: (column) => ColumnOrderings(column)); 2474 + ColumnOrderings<DateTime> get updatedAt => $composableBuilder( 2475 + column: $table.updatedAt, 2476 + builder: (column) => ColumnOrderings(column), 2477 + ); 2031 2478 } 2032 2479 2033 - class $$SettingsTableAnnotationComposer extends Composer<_$AppDatabase, $SettingsTable> { 2480 + class $$SettingsTableAnnotationComposer 2481 + extends Composer<_$AppDatabase, $SettingsTable> { 2034 2482 $$SettingsTableAnnotationComposer({ 2035 2483 required super.$db, 2036 2484 required super.$table, ··· 2038 2486 super.$addJoinBuilderToRootComposer, 2039 2487 super.$removeJoinBuilderFromRootComposer, 2040 2488 }); 2041 - GeneratedColumn<String> get key => $composableBuilder(column: $table.key, builder: (column) => column); 2489 + GeneratedColumn<String> get key => 2490 + $composableBuilder(column: $table.key, builder: (column) => column); 2042 2491 2043 - GeneratedColumn<String> get value => $composableBuilder(column: $table.value, builder: (column) => column); 2492 + GeneratedColumn<String> get value => 2493 + $composableBuilder(column: $table.value, builder: (column) => column); 2044 2494 2045 - GeneratedColumn<DateTime> get updatedAt => $composableBuilder(column: $table.updatedAt, builder: (column) => column); 2495 + GeneratedColumn<DateTime> get updatedAt => 2496 + $composableBuilder(column: $table.updatedAt, builder: (column) => column); 2046 2497 } 2047 2498 2048 2499 class $$SettingsTableTableManager ··· 2056 2507 $$SettingsTableAnnotationComposer, 2057 2508 $$SettingsTableCreateCompanionBuilder, 2058 2509 $$SettingsTableUpdateCompanionBuilder, 2059 - (SettingsEntry, BaseReferences<_$AppDatabase, $SettingsTable, SettingsEntry>), 2510 + ( 2511 + SettingsEntry, 2512 + BaseReferences<_$AppDatabase, $SettingsTable, SettingsEntry>, 2513 + ), 2060 2514 SettingsEntry, 2061 2515 PrefetchHooks Function() 2062 2516 > { ··· 2065 2519 TableManagerState( 2066 2520 db: db, 2067 2521 table: table, 2068 - createFilteringComposer: () => $$SettingsTableFilterComposer($db: db, $table: table), 2069 - createOrderingComposer: () => $$SettingsTableOrderingComposer($db: db, $table: table), 2070 - createComputedFieldComposer: () => $$SettingsTableAnnotationComposer($db: db, $table: table), 2522 + createFilteringComposer: () => 2523 + $$SettingsTableFilterComposer($db: db, $table: table), 2524 + createOrderingComposer: () => 2525 + $$SettingsTableOrderingComposer($db: db, $table: table), 2526 + createComputedFieldComposer: () => 2527 + $$SettingsTableAnnotationComposer($db: db, $table: table), 2071 2528 updateCompanionCallback: 2072 2529 ({ 2073 2530 Value<String> key = const Value.absent(), 2074 2531 Value<String> value = const Value.absent(), 2075 2532 Value<DateTime> updatedAt = const Value.absent(), 2076 2533 Value<int> rowid = const Value.absent(), 2077 - }) => SettingsCompanion(key: key, value: value, updatedAt: updatedAt, rowid: rowid), 2534 + }) => SettingsCompanion( 2535 + key: key, 2536 + value: value, 2537 + updatedAt: updatedAt, 2538 + rowid: rowid, 2539 + ), 2078 2540 createCompanionCallback: 2079 2541 ({ 2080 2542 required String key, 2081 2543 required String value, 2082 2544 Value<DateTime> updatedAt = const Value.absent(), 2083 2545 Value<int> rowid = const Value.absent(), 2084 - }) => SettingsCompanion.insert(key: key, value: value, updatedAt: updatedAt, rowid: rowid), 2085 - withReferenceMapper: (p0) => p0.map((e) => (e.readTable(table), BaseReferences(db, table, e))).toList(), 2546 + }) => SettingsCompanion.insert( 2547 + key: key, 2548 + value: value, 2549 + updatedAt: updatedAt, 2550 + rowid: rowid, 2551 + ), 2552 + withReferenceMapper: (p0) => p0 2553 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) 2554 + .toList(), 2086 2555 prefetchHooksCallback: null, 2087 2556 ), 2088 2557 ); ··· 2098 2567 $$SettingsTableAnnotationComposer, 2099 2568 $$SettingsTableCreateCompanionBuilder, 2100 2569 $$SettingsTableUpdateCompanionBuilder, 2101 - (SettingsEntry, BaseReferences<_$AppDatabase, $SettingsTable, SettingsEntry>), 2570 + ( 2571 + SettingsEntry, 2572 + BaseReferences<_$AppDatabase, $SettingsTable, SettingsEntry>, 2573 + ), 2102 2574 SettingsEntry, 2103 2575 PrefetchHooks Function() 2104 2576 >; ··· 2106 2578 class $AppDatabaseManager { 2107 2579 final _$AppDatabase _db; 2108 2580 $AppDatabaseManager(this._db); 2109 - $$AccountsTableTableManager get accounts => $$AccountsTableTableManager(_db, _db.accounts); 2110 - $$CachedProfilesTableTableManager get cachedProfiles => $$CachedProfilesTableTableManager(_db, _db.cachedProfiles); 2111 - $$CachedPostsTableTableManager get cachedPosts => $$CachedPostsTableTableManager(_db, _db.cachedPosts); 2112 - $$SettingsTableTableManager get settings => $$SettingsTableTableManager(_db, _db.settings); 2581 + $$AccountsTableTableManager get accounts => 2582 + $$AccountsTableTableManager(_db, _db.accounts); 2583 + $$CachedProfilesTableTableManager get cachedProfiles => 2584 + $$CachedProfilesTableTableManager(_db, _db.cachedProfiles); 2585 + $$CachedPostsTableTableManager get cachedPosts => 2586 + $$CachedPostsTableTableManager(_db, _db.cachedPosts); 2587 + $$SettingsTableTableManager get settings => 2588 + $$SettingsTableTableManager(_db, _db.settings); 2113 2589 }
+96
lib/core/theme/app_theme.dart
··· 1 + import 'package:flutter/material.dart'; 2 + import 'package:lazurite/core/theme/catppuccin_theme.dart'; 3 + import 'package:lazurite/core/theme/nord_theme.dart'; 4 + import 'package:lazurite/core/theme/oxocarbon_theme.dart'; 5 + import 'package:lazurite/core/theme/rose_pine_theme.dart'; 6 + 7 + enum AppThemePalette { oxocarbon, catppuccin, nord, rosePine } 8 + 9 + enum AppThemeVariant { light, dark } 10 + 11 + class AppTheme { 12 + AppTheme._(); 13 + 14 + static ThemeData getTheme(AppThemePalette palette, AppThemeVariant variant) { 15 + switch (palette) { 16 + case AppThemePalette.oxocarbon: 17 + return variant == AppThemeVariant.light ? OxocarbonTheme.light() : OxocarbonTheme.dark(); 18 + case AppThemePalette.catppuccin: 19 + return variant == AppThemeVariant.light ? CatppuccinTheme.light() : CatppuccinTheme.dark(); 20 + case AppThemePalette.nord: 21 + return variant == AppThemeVariant.light ? NordTheme.light() : NordTheme.dark(); 22 + case AppThemePalette.rosePine: 23 + return variant == AppThemeVariant.light ? RosePineTheme.light() : RosePineTheme.dark(); 24 + } 25 + } 26 + 27 + static String getPaletteName(AppThemePalette palette) { 28 + switch (palette) { 29 + case AppThemePalette.oxocarbon: 30 + return 'Oxocarbon'; 31 + case AppThemePalette.catppuccin: 32 + return 'Catppuccin'; 33 + case AppThemePalette.nord: 34 + return 'Nord'; 35 + case AppThemePalette.rosePine: 36 + return 'Rosé Pine'; 37 + } 38 + } 39 + 40 + static String getVariantName(AppThemeVariant variant) { 41 + switch (variant) { 42 + case AppThemeVariant.light: 43 + return 'Light'; 44 + case AppThemeVariant.dark: 45 + return 'Dark'; 46 + } 47 + } 48 + 49 + static AppThemePalette parsePalette(String? value) { 50 + switch (value) { 51 + case 'oxocarbon': 52 + return AppThemePalette.oxocarbon; 53 + case 'catppuccin': 54 + return AppThemePalette.catppuccin; 55 + case 'nord': 56 + return AppThemePalette.nord; 57 + case 'rosePine': 58 + return AppThemePalette.rosePine; 59 + default: 60 + return AppThemePalette.oxocarbon; 61 + } 62 + } 63 + 64 + static String paletteToString(AppThemePalette palette) { 65 + switch (palette) { 66 + case AppThemePalette.oxocarbon: 67 + return 'oxocarbon'; 68 + case AppThemePalette.catppuccin: 69 + return 'catppuccin'; 70 + case AppThemePalette.nord: 71 + return 'nord'; 72 + case AppThemePalette.rosePine: 73 + return 'rosePine'; 74 + } 75 + } 76 + 77 + static AppThemeVariant parseVariant(String? value) { 78 + switch (value) { 79 + case 'light': 80 + return AppThemeVariant.light; 81 + case 'dark': 82 + return AppThemeVariant.dark; 83 + default: 84 + return AppThemeVariant.dark; 85 + } 86 + } 87 + 88 + static String variantToString(AppThemeVariant variant) { 89 + switch (variant) { 90 + case AppThemeVariant.light: 91 + return 'light'; 92 + case AppThemeVariant.dark: 93 + return 'dark'; 94 + } 95 + } 96 + }
+190
lib/core/theme/catppuccin_theme.dart
··· 1 + import 'package:flutter/material.dart'; 2 + import 'package:lazurite/core/theme/typography.dart'; 3 + 4 + class CatppuccinTheme { 5 + CatppuccinTheme._(); 6 + 7 + static const Color mochaBase = Color(0xFF1e1e2e); 8 + static const Color mochaMantle = Color(0xFF181825); 9 + static const Color mochaSurface0 = Color(0xFF313244); 10 + static const Color mochaSurface1 = Color(0xFF45475a); 11 + static const Color mochaSubtext0 = Color(0xFFa6adc8); 12 + static const Color mochaText = Color(0xFFcdd6f4); 13 + static const Color mochaLavender = Color(0xFFb4befe); 14 + static const Color mochaBlue = Color(0xFF89b4fa); 15 + static const Color mochaSapphire = Color(0xFF74c7ec); 16 + static const Color mochaGreen = Color(0xFFa6e3a1); 17 + static const Color mochaRed = Color(0xFFf38ba8); 18 + static const Color mochaPeach = Color(0xFFfab387); 19 + static const Color mochaMauve = Color(0xFFcba6f7); 20 + static const Color mochaPink = Color(0xFFf5c2e7); 21 + static const Color mochaRosewater = Color(0xFFf5e0dc); 22 + 23 + static const Color latteBase = Color(0xFFeff1f5); 24 + static const Color latteMantle = Color(0xFFe6e9ef); 25 + static const Color latteSurface0 = Color(0xFFccd0da); 26 + static const Color latteSurface1 = Color(0xFFbcc0cc); 27 + static const Color latteSubtext0 = Color(0xFF6c6f85); 28 + static const Color latteText = Color(0xFF4c4f69); 29 + static const Color latteLavender = Color(0xFF7287fd); 30 + static const Color latteBlue = Color(0xFF1e66f5); 31 + static const Color latteSapphire = Color(0xFF209fb5); 32 + static const Color latteGreen = Color(0xFF40a02b); 33 + static const Color latteRed = Color(0xFFd20f39); 34 + static const Color lattePeach = Color(0xFFfe640b); 35 + static const Color latteMauve = Color(0xFF8839ef); 36 + static const Color lattePink = Color(0xFFea76cb); 37 + static const Color latteRosewater = Color(0xFFdc8a78); 38 + 39 + static ThemeData dark() { 40 + return ThemeData( 41 + useMaterial3: true, 42 + brightness: Brightness.dark, 43 + colorScheme: ColorScheme( 44 + brightness: Brightness.dark, 45 + primary: mochaLavender, 46 + onPrimary: mochaBase, 47 + primaryContainer: mochaMantle, 48 + onPrimaryContainer: mochaText, 49 + secondary: mochaMauve, 50 + onSecondary: mochaBase, 51 + secondaryContainer: mochaMantle, 52 + onSecondaryContainer: mochaText, 53 + tertiary: mochaSapphire, 54 + onTertiary: mochaBase, 55 + error: mochaRed, 56 + onError: mochaBase, 57 + errorContainer: mochaMantle, 58 + onErrorContainer: mochaText, 59 + surface: mochaMantle, 60 + onSurface: mochaText, 61 + surfaceContainerHighest: mochaSurface0, 62 + outline: mochaSurface1, 63 + outlineVariant: mochaSurface0, 64 + ), 65 + scaffoldBackgroundColor: mochaBase, 66 + appBarTheme: AppBarTheme( 67 + backgroundColor: mochaBase, 68 + foregroundColor: mochaText, 69 + surfaceTintColor: mochaLavender, 70 + titleTextStyle: AppTypography.dmSans(fontSize: 18, fontWeight: FontWeight.w600, color: mochaText), 71 + ), 72 + cardTheme: const CardThemeData(color: mochaMantle, surfaceTintColor: mochaLavender), 73 + dividerTheme: const DividerThemeData(color: mochaSurface0), 74 + iconTheme: const IconThemeData(color: mochaSubtext0), 75 + listTileTheme: ListTileThemeData( 76 + textColor: mochaText, 77 + iconColor: mochaSubtext0, 78 + titleTextStyle: AppTypography.dmSans(fontSize: 16, fontWeight: FontWeight.w500, color: mochaText), 79 + subtitleTextStyle: AppTypography.dmSans(fontSize: 14, color: mochaSubtext0), 80 + ), 81 + textTheme: AppTypography.textTheme(bodyColor: mochaText, headlineColor: mochaText, captionColor: mochaSurface1), 82 + floatingActionButtonTheme: const FloatingActionButtonThemeData( 83 + backgroundColor: mochaLavender, 84 + foregroundColor: mochaBase, 85 + ), 86 + elevatedButtonTheme: ElevatedButtonThemeData( 87 + style: ElevatedButton.styleFrom( 88 + backgroundColor: mochaLavender, 89 + foregroundColor: mochaBase, 90 + textStyle: AppTypography.dmSans(fontSize: 14, fontWeight: FontWeight.w500), 91 + ), 92 + ), 93 + textButtonTheme: TextButtonThemeData( 94 + style: TextButton.styleFrom( 95 + foregroundColor: mochaLavender, 96 + textStyle: AppTypography.dmSans(fontSize: 14, fontWeight: FontWeight.w500), 97 + ), 98 + ), 99 + inputDecorationTheme: InputDecorationTheme( 100 + filled: true, 101 + fillColor: mochaMantle, 102 + border: OutlineInputBorder(borderSide: const BorderSide(color: mochaSurface0)), 103 + enabledBorder: OutlineInputBorder(borderSide: const BorderSide(color: mochaSurface0)), 104 + focusedBorder: OutlineInputBorder(borderSide: const BorderSide(color: mochaLavender)), 105 + labelStyle: AppTypography.dmSans(color: mochaSurface1), 106 + hintStyle: AppTypography.dmSans(color: mochaSurface1), 107 + ), 108 + snackBarTheme: SnackBarThemeData( 109 + backgroundColor: mochaMantle, 110 + contentTextStyle: AppTypography.dmSans(color: mochaText), 111 + ), 112 + ); 113 + } 114 + 115 + static ThemeData light() { 116 + return ThemeData( 117 + useMaterial3: true, 118 + brightness: Brightness.light, 119 + colorScheme: ColorScheme( 120 + brightness: Brightness.light, 121 + primary: latteLavender, 122 + onPrimary: latteBase, 123 + primaryContainer: latteMantle, 124 + onPrimaryContainer: latteText, 125 + secondary: latteMauve, 126 + onSecondary: latteBase, 127 + secondaryContainer: latteMantle, 128 + onSecondaryContainer: latteText, 129 + tertiary: latteSapphire, 130 + onTertiary: latteBase, 131 + error: latteRed, 132 + onError: latteBase, 133 + errorContainer: latteMantle, 134 + onErrorContainer: latteText, 135 + surface: latteMantle, 136 + onSurface: latteText, 137 + surfaceContainerHighest: latteSurface0, 138 + outline: latteSurface1, 139 + outlineVariant: latteSurface0, 140 + ), 141 + scaffoldBackgroundColor: latteBase, 142 + appBarTheme: AppBarTheme( 143 + backgroundColor: latteBase, 144 + foregroundColor: latteText, 145 + surfaceTintColor: latteLavender, 146 + titleTextStyle: AppTypography.dmSans(fontSize: 18, fontWeight: FontWeight.w600, color: latteText), 147 + ), 148 + cardTheme: const CardThemeData(color: latteMantle, surfaceTintColor: latteLavender), 149 + dividerTheme: const DividerThemeData(color: latteSurface0), 150 + iconTheme: const IconThemeData(color: latteSubtext0), 151 + listTileTheme: ListTileThemeData( 152 + textColor: latteText, 153 + iconColor: latteSubtext0, 154 + titleTextStyle: AppTypography.dmSans(fontSize: 16, fontWeight: FontWeight.w500, color: latteText), 155 + subtitleTextStyle: AppTypography.dmSans(fontSize: 14, color: latteSubtext0), 156 + ), 157 + textTheme: AppTypography.textTheme(bodyColor: latteText, headlineColor: latteText, captionColor: latteSurface1), 158 + floatingActionButtonTheme: const FloatingActionButtonThemeData( 159 + backgroundColor: latteLavender, 160 + foregroundColor: latteBase, 161 + ), 162 + elevatedButtonTheme: ElevatedButtonThemeData( 163 + style: ElevatedButton.styleFrom( 164 + backgroundColor: latteLavender, 165 + foregroundColor: latteBase, 166 + textStyle: AppTypography.dmSans(fontSize: 14, fontWeight: FontWeight.w500), 167 + ), 168 + ), 169 + textButtonTheme: TextButtonThemeData( 170 + style: TextButton.styleFrom( 171 + foregroundColor: latteLavender, 172 + textStyle: AppTypography.dmSans(fontSize: 14, fontWeight: FontWeight.w500), 173 + ), 174 + ), 175 + inputDecorationTheme: InputDecorationTheme( 176 + filled: true, 177 + fillColor: latteMantle, 178 + border: OutlineInputBorder(borderSide: const BorderSide(color: latteSurface0)), 179 + enabledBorder: OutlineInputBorder(borderSide: const BorderSide(color: latteSurface0)), 180 + focusedBorder: OutlineInputBorder(borderSide: const BorderSide(color: latteLavender)), 181 + labelStyle: AppTypography.dmSans(color: latteSurface1), 182 + hintStyle: AppTypography.dmSans(color: latteSurface1), 183 + ), 184 + snackBarTheme: SnackBarThemeData( 185 + backgroundColor: latteMantle, 186 + contentTextStyle: AppTypography.dmSans(color: latteText), 187 + ), 188 + ); 189 + } 190 + }
+169
lib/core/theme/nord_theme.dart
··· 1 + import 'package:flutter/material.dart'; 2 + import 'package:lazurite/core/theme/typography.dart'; 3 + 4 + class NordTheme { 5 + NordTheme._(); 6 + 7 + static const Color nord0 = Color(0xFF2e3440); 8 + static const Color nord1 = Color(0xFF3b4252); 9 + static const Color nord2 = Color(0xFF434c5e); 10 + static const Color nord3 = Color(0xFF4c566a); 11 + static const Color nord4 = Color(0xFFd8dee9); 12 + static const Color nord5 = Color(0xFFe5e9f0); 13 + static const Color nord6 = Color(0xFFeceff4); 14 + static const Color nord7 = Color(0xFF8fbcbb); 15 + static const Color nord8 = Color(0xFF88c0d0); 16 + static const Color nord9 = Color(0xFF81a1c1); 17 + static const Color nord10 = Color(0xFF5e81ac); 18 + static const Color nord11 = Color(0xFFbf616a); 19 + static const Color nord12 = Color(0xFFd08770); 20 + static const Color nord13 = Color(0xFFebcb8b); 21 + static const Color nord14 = Color(0xFFa3be8c); 22 + static const Color nord15 = Color(0xFFb48ead); 23 + 24 + static ThemeData dark() { 25 + return ThemeData( 26 + useMaterial3: true, 27 + brightness: Brightness.dark, 28 + colorScheme: ColorScheme( 29 + brightness: Brightness.dark, 30 + primary: nord8, 31 + onPrimary: nord0, 32 + primaryContainer: nord1, 33 + onPrimaryContainer: nord5, 34 + secondary: nord9, 35 + onSecondary: nord0, 36 + secondaryContainer: nord1, 37 + onSecondaryContainer: nord5, 38 + tertiary: nord7, 39 + onTertiary: nord0, 40 + error: nord11, 41 + onError: nord6, 42 + errorContainer: nord1, 43 + onErrorContainer: nord5, 44 + surface: nord1, 45 + onSurface: nord5, 46 + surfaceContainerHighest: nord2, 47 + outline: nord3, 48 + outlineVariant: nord2, 49 + ), 50 + scaffoldBackgroundColor: nord0, 51 + appBarTheme: AppBarTheme( 52 + backgroundColor: nord0, 53 + foregroundColor: nord5, 54 + surfaceTintColor: nord8, 55 + titleTextStyle: AppTypography.dmSans(fontSize: 18, fontWeight: FontWeight.w600, color: nord5), 56 + ), 57 + cardTheme: const CardThemeData(color: nord1, surfaceTintColor: nord8), 58 + dividerTheme: const DividerThemeData(color: nord2), 59 + iconTheme: const IconThemeData(color: nord4), 60 + listTileTheme: ListTileThemeData( 61 + textColor: nord5, 62 + iconColor: nord4, 63 + titleTextStyle: AppTypography.dmSans(fontSize: 16, fontWeight: FontWeight.w500, color: nord5), 64 + subtitleTextStyle: AppTypography.dmSans(fontSize: 14, color: nord4), 65 + ), 66 + textTheme: AppTypography.textTheme(bodyColor: nord5, headlineColor: nord6, captionColor: nord3), 67 + floatingActionButtonTheme: const FloatingActionButtonThemeData(backgroundColor: nord8, foregroundColor: nord0), 68 + elevatedButtonTheme: ElevatedButtonThemeData( 69 + style: ElevatedButton.styleFrom( 70 + backgroundColor: nord8, 71 + foregroundColor: nord0, 72 + textStyle: AppTypography.dmSans(fontSize: 14, fontWeight: FontWeight.w500), 73 + ), 74 + ), 75 + textButtonTheme: TextButtonThemeData( 76 + style: TextButton.styleFrom( 77 + foregroundColor: nord8, 78 + textStyle: AppTypography.dmSans(fontSize: 14, fontWeight: FontWeight.w500), 79 + ), 80 + ), 81 + inputDecorationTheme: InputDecorationTheme( 82 + filled: true, 83 + fillColor: nord1, 84 + border: OutlineInputBorder(borderSide: const BorderSide(color: nord2)), 85 + enabledBorder: OutlineInputBorder(borderSide: const BorderSide(color: nord2)), 86 + focusedBorder: OutlineInputBorder(borderSide: const BorderSide(color: nord8)), 87 + labelStyle: AppTypography.dmSans(color: nord3), 88 + hintStyle: AppTypography.dmSans(color: nord3), 89 + ), 90 + snackBarTheme: SnackBarThemeData( 91 + backgroundColor: nord1, 92 + contentTextStyle: AppTypography.dmSans(color: nord5), 93 + ), 94 + ); 95 + } 96 + 97 + static ThemeData light() { 98 + return ThemeData( 99 + useMaterial3: true, 100 + brightness: Brightness.light, 101 + colorScheme: ColorScheme( 102 + brightness: Brightness.light, 103 + primary: nord8, 104 + onPrimary: nord0, 105 + primaryContainer: nord1, 106 + onPrimaryContainer: nord3, 107 + secondary: nord9, 108 + onSecondary: nord6, 109 + secondaryContainer: nord1, 110 + onSecondaryContainer: nord3, 111 + tertiary: nord7, 112 + onTertiary: nord0, 113 + error: nord11, 114 + onError: nord6, 115 + errorContainer: nord1, 116 + onErrorContainer: nord3, 117 + surface: nord1, 118 + onSurface: nord3, 119 + surfaceContainerHighest: nord2, 120 + outline: nord3, 121 + outlineVariant: nord2, 122 + ), 123 + scaffoldBackgroundColor: nord6, 124 + appBarTheme: AppBarTheme( 125 + backgroundColor: nord6, 126 + foregroundColor: nord3, 127 + surfaceTintColor: nord8, 128 + titleTextStyle: AppTypography.dmSans(fontSize: 18, fontWeight: FontWeight.w600, color: nord3), 129 + ), 130 + cardTheme: const CardThemeData(color: nord5, surfaceTintColor: nord8), 131 + dividerTheme: const DividerThemeData(color: nord2), 132 + iconTheme: const IconThemeData(color: nord4), 133 + listTileTheme: ListTileThemeData( 134 + textColor: nord3, 135 + iconColor: nord4, 136 + titleTextStyle: AppTypography.dmSans(fontSize: 16, fontWeight: FontWeight.w500, color: nord3), 137 + subtitleTextStyle: AppTypography.dmSans(fontSize: 14, color: nord4), 138 + ), 139 + textTheme: AppTypography.textTheme(bodyColor: nord3, headlineColor: nord0, captionColor: nord3), 140 + floatingActionButtonTheme: const FloatingActionButtonThemeData(backgroundColor: nord8, foregroundColor: nord0), 141 + elevatedButtonTheme: ElevatedButtonThemeData( 142 + style: ElevatedButton.styleFrom( 143 + backgroundColor: nord8, 144 + foregroundColor: nord0, 145 + textStyle: AppTypography.dmSans(fontSize: 14, fontWeight: FontWeight.w500), 146 + ), 147 + ), 148 + textButtonTheme: TextButtonThemeData( 149 + style: TextButton.styleFrom( 150 + foregroundColor: nord8, 151 + textStyle: AppTypography.dmSans(fontSize: 14, fontWeight: FontWeight.w500), 152 + ), 153 + ), 154 + inputDecorationTheme: InputDecorationTheme( 155 + filled: true, 156 + fillColor: nord5, 157 + border: OutlineInputBorder(borderSide: const BorderSide(color: nord2)), 158 + enabledBorder: OutlineInputBorder(borderSide: const BorderSide(color: nord2)), 159 + focusedBorder: OutlineInputBorder(borderSide: const BorderSide(color: nord8)), 160 + labelStyle: AppTypography.dmSans(color: nord3), 161 + hintStyle: AppTypography.dmSans(color: nord3), 162 + ), 163 + snackBarTheme: SnackBarThemeData( 164 + backgroundColor: nord5, 165 + contentTextStyle: AppTypography.dmSans(color: nord3), 166 + ), 167 + ); 168 + } 169 + }
+192
lib/core/theme/oxocarbon_theme.dart
··· 1 + import 'package:flutter/material.dart'; 2 + import 'package:lazurite/core/theme/typography.dart'; 3 + 4 + class OxocarbonTheme { 5 + OxocarbonTheme._(); 6 + 7 + static const Color darkBase00 = Color(0xFF161616); 8 + static const Color darkBase01 = Color(0xFF262626); 9 + static const Color darkBase02 = Color(0xFF393939); 10 + static const Color darkBase03 = Color(0xFF525252); 11 + static const Color darkBase04 = Color(0xFFdde1e6); 12 + static const Color darkBase05 = Color(0xFFf2f4f8); 13 + static const Color darkBase06 = Color(0xFFffffff); 14 + static const Color darkBase07 = Color(0xFF08bdba); 15 + static const Color darkBase08 = Color(0xFF3ddbd9); 16 + static const Color darkBase09 = Color(0xFF78a9ff); 17 + static const Color darkBase0A = Color(0xFFee5396); 18 + static const Color darkBase0B = Color(0xFF33b1ff); 19 + static const Color darkBase0C = Color(0xFFff7eb6); 20 + static const Color darkBase0D = Color(0xFF42be65); 21 + static const Color darkBase0E = Color(0xFFbe95ff); 22 + static const Color darkBase0F = Color(0xFF82cfff); 23 + 24 + static const Color lightBase00 = Color(0xFFffffff); 25 + static const Color lightBase01 = Color(0xFFf2f2f2); 26 + static const Color lightBase02 = Color(0xFFd0d0d0); 27 + static const Color lightBase03 = Color(0xFF161616); 28 + static const Color lightBase04 = Color(0xFF37474F); 29 + static const Color lightBase05 = Color(0xFF90A4AE); 30 + static const Color lightBase06 = Color(0xFF525252); 31 + static const Color lightBase07 = Color(0xFF08bdba); 32 + static const Color lightBase08 = Color(0xFFff7eb6); 33 + static const Color lightBase09 = Color(0xFFee5396); 34 + static const Color lightBase0A = Color(0xFFFF6F00); 35 + static const Color lightBase0B = Color(0xFF0f62fe); 36 + static const Color lightBase0C = Color(0xFF673AB7); 37 + static const Color lightBase0D = Color(0xFF42be65); 38 + static const Color lightBase0E = Color(0xFFbe95ff); 39 + static const Color lightBase0F = Color(0xFFFFAB91); 40 + 41 + static ThemeData dark() { 42 + return ThemeData( 43 + useMaterial3: true, 44 + brightness: Brightness.dark, 45 + colorScheme: ColorScheme( 46 + brightness: Brightness.dark, 47 + primary: darkBase09, 48 + onPrimary: darkBase00, 49 + primaryContainer: darkBase01, 50 + onPrimaryContainer: darkBase05, 51 + secondary: darkBase0E, 52 + onSecondary: darkBase00, 53 + secondaryContainer: darkBase01, 54 + onSecondaryContainer: darkBase05, 55 + tertiary: darkBase07, 56 + onTertiary: darkBase00, 57 + error: darkBase0A, 58 + onError: darkBase00, 59 + errorContainer: darkBase01, 60 + onErrorContainer: darkBase05, 61 + surface: darkBase01, 62 + onSurface: darkBase05, 63 + surfaceContainerHighest: darkBase02, 64 + outline: darkBase03, 65 + outlineVariant: darkBase02, 66 + ), 67 + scaffoldBackgroundColor: darkBase00, 68 + appBarTheme: AppBarTheme( 69 + backgroundColor: darkBase00, 70 + foregroundColor: darkBase05, 71 + surfaceTintColor: darkBase09, 72 + titleTextStyle: AppTypography.dmSans(fontSize: 18, fontWeight: FontWeight.w600, color: darkBase05), 73 + ), 74 + cardTheme: const CardThemeData(color: darkBase01, surfaceTintColor: darkBase09), 75 + dividerTheme: const DividerThemeData(color: darkBase02), 76 + iconTheme: const IconThemeData(color: darkBase04), 77 + listTileTheme: ListTileThemeData( 78 + textColor: darkBase05, 79 + iconColor: darkBase04, 80 + titleTextStyle: AppTypography.dmSans(fontSize: 16, fontWeight: FontWeight.w500, color: darkBase05), 81 + subtitleTextStyle: AppTypography.dmSans(fontSize: 14, color: darkBase04), 82 + ), 83 + textTheme: AppTypography.textTheme(bodyColor: darkBase05, headlineColor: darkBase06, captionColor: darkBase03), 84 + floatingActionButtonTheme: const FloatingActionButtonThemeData( 85 + backgroundColor: darkBase09, 86 + foregroundColor: darkBase00, 87 + ), 88 + elevatedButtonTheme: ElevatedButtonThemeData( 89 + style: ElevatedButton.styleFrom( 90 + backgroundColor: darkBase09, 91 + foregroundColor: darkBase00, 92 + textStyle: AppTypography.dmSans(fontSize: 14, fontWeight: FontWeight.w500), 93 + ), 94 + ), 95 + textButtonTheme: TextButtonThemeData( 96 + style: TextButton.styleFrom( 97 + foregroundColor: darkBase09, 98 + textStyle: AppTypography.dmSans(fontSize: 14, fontWeight: FontWeight.w500), 99 + ), 100 + ), 101 + inputDecorationTheme: InputDecorationTheme( 102 + filled: true, 103 + fillColor: darkBase01, 104 + border: OutlineInputBorder(borderSide: const BorderSide(color: darkBase02)), 105 + enabledBorder: OutlineInputBorder(borderSide: const BorderSide(color: darkBase02)), 106 + focusedBorder: OutlineInputBorder(borderSide: BorderSide(color: darkBase09)), 107 + labelStyle: AppTypography.dmSans(color: darkBase03), 108 + hintStyle: AppTypography.dmSans(color: darkBase03), 109 + ), 110 + snackBarTheme: SnackBarThemeData( 111 + backgroundColor: darkBase01, 112 + contentTextStyle: AppTypography.dmSans(color: darkBase05), 113 + ), 114 + ); 115 + } 116 + 117 + static ThemeData light() { 118 + return ThemeData( 119 + useMaterial3: true, 120 + brightness: Brightness.light, 121 + colorScheme: ColorScheme( 122 + brightness: Brightness.light, 123 + primary: lightBase0B, 124 + onPrimary: lightBase00, 125 + primaryContainer: lightBase01, 126 + onPrimaryContainer: lightBase03, 127 + secondary: lightBase0C, 128 + onSecondary: lightBase00, 129 + secondaryContainer: lightBase01, 130 + onSecondaryContainer: lightBase03, 131 + tertiary: lightBase07, 132 + onTertiary: lightBase00, 133 + error: lightBase09, 134 + onError: lightBase00, 135 + errorContainer: lightBase01, 136 + onErrorContainer: lightBase03, 137 + surface: lightBase01, 138 + onSurface: lightBase03, 139 + surfaceContainerHighest: lightBase02, 140 + outline: lightBase05, 141 + outlineVariant: lightBase02, 142 + ), 143 + scaffoldBackgroundColor: lightBase00, 144 + appBarTheme: AppBarTheme( 145 + backgroundColor: lightBase00, 146 + foregroundColor: lightBase03, 147 + surfaceTintColor: lightBase0B, 148 + titleTextStyle: AppTypography.dmSans(fontSize: 18, fontWeight: FontWeight.w600, color: lightBase03), 149 + ), 150 + cardTheme: const CardThemeData(color: lightBase01, surfaceTintColor: lightBase0B), 151 + dividerTheme: const DividerThemeData(color: lightBase02), 152 + iconTheme: const IconThemeData(color: lightBase04), 153 + listTileTheme: ListTileThemeData( 154 + textColor: lightBase03, 155 + iconColor: lightBase04, 156 + titleTextStyle: AppTypography.dmSans(fontSize: 16, fontWeight: FontWeight.w500, color: lightBase03), 157 + subtitleTextStyle: AppTypography.dmSans(fontSize: 14, color: lightBase04), 158 + ), 159 + textTheme: AppTypography.textTheme(bodyColor: lightBase03, headlineColor: lightBase03, captionColor: lightBase05), 160 + floatingActionButtonTheme: const FloatingActionButtonThemeData( 161 + backgroundColor: lightBase0B, 162 + foregroundColor: lightBase00, 163 + ), 164 + elevatedButtonTheme: ElevatedButtonThemeData( 165 + style: ElevatedButton.styleFrom( 166 + backgroundColor: lightBase0B, 167 + foregroundColor: lightBase00, 168 + textStyle: AppTypography.dmSans(fontSize: 14, fontWeight: FontWeight.w500), 169 + ), 170 + ), 171 + textButtonTheme: TextButtonThemeData( 172 + style: TextButton.styleFrom( 173 + foregroundColor: lightBase0B, 174 + textStyle: AppTypography.dmSans(fontSize: 14, fontWeight: FontWeight.w500), 175 + ), 176 + ), 177 + inputDecorationTheme: InputDecorationTheme( 178 + filled: true, 179 + fillColor: lightBase01, 180 + border: OutlineInputBorder(borderSide: const BorderSide(color: lightBase02)), 181 + enabledBorder: OutlineInputBorder(borderSide: const BorderSide(color: lightBase02)), 182 + focusedBorder: OutlineInputBorder(borderSide: BorderSide(color: lightBase0B)), 183 + labelStyle: AppTypography.dmSans(color: lightBase05), 184 + hintStyle: AppTypography.dmSans(color: lightBase05), 185 + ), 186 + snackBarTheme: SnackBarThemeData( 187 + backgroundColor: lightBase01, 188 + contentTextStyle: AppTypography.dmSans(color: lightBase03), 189 + ), 190 + ); 191 + } 192 + }
+184
lib/core/theme/rose_pine_theme.dart
··· 1 + import 'package:flutter/material.dart'; 2 + import 'package:lazurite/core/theme/typography.dart'; 3 + 4 + class RosePineTheme { 5 + RosePineTheme._(); 6 + 7 + static const Color mainBase = Color(0xFF191724); 8 + static const Color mainSurface = Color(0xFF1f1d2e); 9 + static const Color mainOverlay = Color(0xFF26233a); 10 + static const Color mainMuted = Color(0xFF6e6a86); 11 + static const Color mainSubtle = Color(0xFF908caa); 12 + static const Color mainText = Color(0xFFe0def4); 13 + static const Color mainLove = Color(0xFFeb6f92); 14 + static const Color mainGold = Color(0xFFf6c177); 15 + static const Color mainRose = Color(0xFFebbcba); 16 + static const Color mainPine = Color(0xFF31748f); 17 + static const Color mainFoam = Color(0xFF9ccfd8); 18 + static const Color mainIris = Color(0xFFc4a7e7); 19 + 20 + static const Color dawnBase = Color(0xFFfaf4ed); 21 + static const Color dawnSurface = Color(0xFFfffaf3); 22 + static const Color dawnOverlay = Color(0xFFf2e9e1); 23 + static const Color dawnMuted = Color(0xFF9893a5); 24 + static const Color dawnSubtle = Color(0xFF797593); 25 + static const Color dawnText = Color(0xFF575279); 26 + static const Color dawnLove = Color(0xFFb4637a); 27 + static const Color dawnGold = Color(0xFFea9d34); 28 + static const Color dawnRose = Color(0xFFd7827e); 29 + static const Color dawnPine = Color(0xFF286983); 30 + static const Color dawnFoam = Color(0xFF56949f); 31 + static const Color dawnIris = Color(0xFF907aa9); 32 + 33 + static ThemeData dark() { 34 + return ThemeData( 35 + useMaterial3: true, 36 + brightness: Brightness.dark, 37 + colorScheme: ColorScheme( 38 + brightness: Brightness.dark, 39 + primary: mainRose, 40 + onPrimary: mainBase, 41 + primaryContainer: mainSurface, 42 + onPrimaryContainer: mainText, 43 + secondary: mainIris, 44 + onSecondary: mainBase, 45 + secondaryContainer: mainSurface, 46 + onSecondaryContainer: mainText, 47 + tertiary: mainFoam, 48 + onTertiary: mainBase, 49 + error: mainLove, 50 + onError: mainBase, 51 + errorContainer: mainSurface, 52 + onErrorContainer: mainText, 53 + surface: mainSurface, 54 + onSurface: mainText, 55 + surfaceContainerHighest: mainOverlay, 56 + outline: mainMuted, 57 + outlineVariant: mainOverlay, 58 + ), 59 + scaffoldBackgroundColor: mainBase, 60 + appBarTheme: AppBarTheme( 61 + backgroundColor: mainBase, 62 + foregroundColor: mainText, 63 + surfaceTintColor: mainRose, 64 + titleTextStyle: AppTypography.dmSans(fontSize: 18, fontWeight: FontWeight.w600, color: mainText), 65 + ), 66 + cardTheme: const CardThemeData(color: mainSurface, surfaceTintColor: mainRose), 67 + dividerTheme: const DividerThemeData(color: mainOverlay), 68 + iconTheme: const IconThemeData(color: mainSubtle), 69 + listTileTheme: ListTileThemeData( 70 + textColor: mainText, 71 + iconColor: mainSubtle, 72 + titleTextStyle: AppTypography.dmSans(fontSize: 16, fontWeight: FontWeight.w500, color: mainText), 73 + subtitleTextStyle: AppTypography.dmSans(fontSize: 14, color: mainSubtle), 74 + ), 75 + textTheme: AppTypography.textTheme(bodyColor: mainText, headlineColor: mainText, captionColor: mainMuted), 76 + floatingActionButtonTheme: const FloatingActionButtonThemeData( 77 + backgroundColor: mainRose, 78 + foregroundColor: mainBase, 79 + ), 80 + elevatedButtonTheme: ElevatedButtonThemeData( 81 + style: ElevatedButton.styleFrom( 82 + backgroundColor: mainRose, 83 + foregroundColor: mainBase, 84 + textStyle: AppTypography.dmSans(fontSize: 14, fontWeight: FontWeight.w500), 85 + ), 86 + ), 87 + textButtonTheme: TextButtonThemeData( 88 + style: TextButton.styleFrom( 89 + foregroundColor: mainRose, 90 + textStyle: AppTypography.dmSans(fontSize: 14, fontWeight: FontWeight.w500), 91 + ), 92 + ), 93 + inputDecorationTheme: InputDecorationTheme( 94 + filled: true, 95 + fillColor: mainSurface, 96 + border: OutlineInputBorder(borderSide: const BorderSide(color: mainOverlay)), 97 + enabledBorder: OutlineInputBorder(borderSide: const BorderSide(color: mainOverlay)), 98 + focusedBorder: OutlineInputBorder(borderSide: const BorderSide(color: mainRose)), 99 + labelStyle: AppTypography.dmSans(color: mainMuted), 100 + hintStyle: AppTypography.dmSans(color: mainMuted), 101 + ), 102 + snackBarTheme: SnackBarThemeData( 103 + backgroundColor: mainSurface, 104 + contentTextStyle: AppTypography.dmSans(color: mainText), 105 + ), 106 + ); 107 + } 108 + 109 + static ThemeData light() { 110 + return ThemeData( 111 + useMaterial3: true, 112 + brightness: Brightness.light, 113 + colorScheme: ColorScheme( 114 + brightness: Brightness.light, 115 + primary: dawnRose, 116 + onPrimary: dawnBase, 117 + primaryContainer: dawnSurface, 118 + onPrimaryContainer: dawnText, 119 + secondary: dawnIris, 120 + onSecondary: dawnBase, 121 + secondaryContainer: dawnSurface, 122 + onSecondaryContainer: dawnText, 123 + tertiary: dawnFoam, 124 + onTertiary: dawnBase, 125 + error: dawnLove, 126 + onError: dawnBase, 127 + errorContainer: dawnSurface, 128 + onErrorContainer: dawnText, 129 + surface: dawnSurface, 130 + onSurface: dawnText, 131 + surfaceContainerHighest: dawnOverlay, 132 + outline: dawnMuted, 133 + outlineVariant: dawnOverlay, 134 + ), 135 + scaffoldBackgroundColor: dawnBase, 136 + appBarTheme: AppBarTheme( 137 + backgroundColor: dawnBase, 138 + foregroundColor: dawnText, 139 + surfaceTintColor: dawnRose, 140 + titleTextStyle: AppTypography.dmSans(fontSize: 18, fontWeight: FontWeight.w600, color: dawnText), 141 + ), 142 + cardTheme: const CardThemeData(color: dawnSurface, surfaceTintColor: dawnRose), 143 + dividerTheme: const DividerThemeData(color: dawnOverlay), 144 + iconTheme: const IconThemeData(color: dawnSubtle), 145 + listTileTheme: ListTileThemeData( 146 + textColor: dawnText, 147 + iconColor: dawnSubtle, 148 + titleTextStyle: AppTypography.dmSans(fontSize: 16, fontWeight: FontWeight.w500, color: dawnText), 149 + subtitleTextStyle: AppTypography.dmSans(fontSize: 14, color: dawnSubtle), 150 + ), 151 + textTheme: AppTypography.textTheme(bodyColor: dawnText, headlineColor: dawnText, captionColor: dawnMuted), 152 + floatingActionButtonTheme: const FloatingActionButtonThemeData( 153 + backgroundColor: dawnRose, 154 + foregroundColor: dawnBase, 155 + ), 156 + elevatedButtonTheme: ElevatedButtonThemeData( 157 + style: ElevatedButton.styleFrom( 158 + backgroundColor: dawnRose, 159 + foregroundColor: dawnBase, 160 + textStyle: AppTypography.dmSans(fontSize: 14, fontWeight: FontWeight.w500), 161 + ), 162 + ), 163 + textButtonTheme: TextButtonThemeData( 164 + style: TextButton.styleFrom( 165 + foregroundColor: dawnRose, 166 + textStyle: AppTypography.dmSans(fontSize: 14, fontWeight: FontWeight.w500), 167 + ), 168 + ), 169 + inputDecorationTheme: InputDecorationTheme( 170 + filled: true, 171 + fillColor: dawnSurface, 172 + border: OutlineInputBorder(borderSide: const BorderSide(color: dawnOverlay)), 173 + enabledBorder: OutlineInputBorder(borderSide: const BorderSide(color: dawnOverlay)), 174 + focusedBorder: OutlineInputBorder(borderSide: const BorderSide(color: dawnRose)), 175 + labelStyle: AppTypography.dmSans(color: dawnMuted), 176 + hintStyle: AppTypography.dmSans(color: dawnMuted), 177 + ), 178 + snackBarTheme: SnackBarThemeData( 179 + backgroundColor: dawnSurface, 180 + contentTextStyle: AppTypography.dmSans(color: dawnText), 181 + ), 182 + ); 183 + } 184 + }
+74
lib/core/theme/typography.dart
··· 1 + import 'package:flutter/material.dart'; 2 + import 'package:google_fonts/google_fonts.dart'; 3 + 4 + class AppTypography { 5 + AppTypography._(); 6 + 7 + static TextStyle dmSans({ 8 + double fontSize = 14, 9 + FontWeight fontWeight = FontWeight.normal, 10 + Color? color, 11 + double? letterSpacing, 12 + double? height, 13 + }) { 14 + return GoogleFonts.dmSans( 15 + fontSize: fontSize, 16 + fontWeight: fontWeight, 17 + color: color, 18 + letterSpacing: letterSpacing, 19 + height: height, 20 + ); 21 + } 22 + 23 + static TextStyle lora({ 24 + double fontSize = 14, 25 + FontWeight fontWeight = FontWeight.normal, 26 + Color? color, 27 + double? letterSpacing, 28 + double? height, 29 + }) { 30 + return GoogleFonts.lora( 31 + fontSize: fontSize, 32 + fontWeight: fontWeight, 33 + color: color, 34 + letterSpacing: letterSpacing, 35 + height: height, 36 + ); 37 + } 38 + 39 + static TextStyle jetBrainsMono({ 40 + double fontSize = 14, 41 + FontWeight fontWeight = FontWeight.normal, 42 + Color? color, 43 + double? letterSpacing, 44 + double? height, 45 + }) { 46 + return GoogleFonts.jetBrainsMono( 47 + fontSize: fontSize, 48 + fontWeight: fontWeight, 49 + color: color, 50 + letterSpacing: letterSpacing, 51 + height: height, 52 + ); 53 + } 54 + 55 + static TextTheme textTheme({Color? bodyColor, Color? headlineColor, Color? captionColor}) { 56 + return TextTheme( 57 + displayLarge: lora(fontSize: 57, fontWeight: FontWeight.w400, color: headlineColor, letterSpacing: -0.25), 58 + displayMedium: lora(fontSize: 45, fontWeight: FontWeight.w400, color: headlineColor), 59 + displaySmall: lora(fontSize: 36, fontWeight: FontWeight.w400, color: headlineColor), 60 + headlineLarge: lora(fontSize: 32, fontWeight: FontWeight.w600, color: headlineColor), 61 + headlineMedium: lora(fontSize: 28, fontWeight: FontWeight.w600, color: headlineColor), 62 + headlineSmall: lora(fontSize: 24, fontWeight: FontWeight.w600, color: headlineColor), 63 + titleLarge: dmSans(fontSize: 22, fontWeight: FontWeight.w600, color: bodyColor), 64 + titleMedium: dmSans(fontSize: 16, fontWeight: FontWeight.w500, color: bodyColor, letterSpacing: 0.15), 65 + titleSmall: jetBrainsMono(fontSize: 14, fontWeight: FontWeight.w500, color: bodyColor, letterSpacing: 0.1), 66 + bodyLarge: dmSans(fontSize: 16, fontWeight: FontWeight.w400, color: bodyColor, letterSpacing: 0.5), 67 + bodyMedium: dmSans(fontSize: 14, fontWeight: FontWeight.w400, color: bodyColor, letterSpacing: 0.25), 68 + bodySmall: jetBrainsMono(fontSize: 12, fontWeight: FontWeight.w400, color: captionColor, letterSpacing: 0.4), 69 + labelLarge: dmSans(fontSize: 14, fontWeight: FontWeight.w500, color: bodyColor, letterSpacing: 0.1), 70 + labelMedium: dmSans(fontSize: 12, fontWeight: FontWeight.w500, color: bodyColor, letterSpacing: 0.5), 71 + labelSmall: jetBrainsMono(fontSize: 11, fontWeight: FontWeight.w500, color: captionColor, letterSpacing: 0.5), 72 + ); 73 + } 74 + }
+60
lib/features/settings/bloc/settings_cubit.dart
··· 1 + import 'package:flutter_bloc/flutter_bloc.dart'; 2 + import 'package:lazurite/core/database/app_database.dart'; 3 + import 'package:lazurite/core/theme/app_theme.dart'; 4 + import 'package:lazurite/features/settings/bloc/settings_state.dart'; 5 + 6 + class SettingsCubit extends Cubit<SettingsState> { 7 + SettingsCubit({ 8 + required this.database, 9 + AppThemePalette? initialPalette, 10 + AppThemeVariant? initialVariant, 11 + bool? initialUseSystemTheme, 12 + }) : super( 13 + SettingsState( 14 + themePalette: initialPalette ?? AppThemePalette.oxocarbon, 15 + themeVariant: initialVariant ?? AppThemeVariant.dark, 16 + useSystemTheme: initialUseSystemTheme ?? false, 17 + ), 18 + ); 19 + 20 + final AppDatabase database; 21 + 22 + static const String _keyThemePalette = 'theme_palette'; 23 + static const String _keyThemeVariant = 'theme_variant'; 24 + static const String _keyUseSystemTheme = 'use_system_theme'; 25 + 26 + Future<void> loadSettings() async { 27 + final paletteStr = await database.getSetting(_keyThemePalette); 28 + final variantStr = await database.getSetting(_keyThemeVariant); 29 + final useSystemStr = await database.getSetting(_keyUseSystemTheme); 30 + 31 + emit( 32 + state.copyWith( 33 + themePalette: AppTheme.parsePalette(paletteStr), 34 + themeVariant: AppTheme.parseVariant(variantStr), 35 + useSystemTheme: useSystemStr == 'true', 36 + ), 37 + ); 38 + } 39 + 40 + Future<void> setThemePalette(AppThemePalette palette) async { 41 + await database.setSetting(_keyThemePalette, AppTheme.paletteToString(palette)); 42 + emit(state.copyWith(themePalette: palette)); 43 + } 44 + 45 + Future<void> setThemeVariant(AppThemeVariant variant) async { 46 + await database.setSetting(_keyThemeVariant, AppTheme.variantToString(variant)); 47 + emit(state.copyWith(themeVariant: variant)); 48 + } 49 + 50 + Future<void> setTheme(AppThemePalette palette, AppThemeVariant variant) async { 51 + await database.setSetting(_keyThemePalette, AppTheme.paletteToString(palette)); 52 + await database.setSetting(_keyThemeVariant, AppTheme.variantToString(variant)); 53 + emit(state.copyWith(themePalette: palette, themeVariant: variant)); 54 + } 55 + 56 + Future<void> setUseSystemTheme(bool value) async { 57 + await database.setSetting(_keyUseSystemTheme, value.toString()); 58 + emit(state.copyWith(useSystemTheme: value)); 59 + } 60 + }
+24
lib/features/settings/bloc/settings_state.dart
··· 1 + import 'package:equatable/equatable.dart'; 2 + import 'package:flutter/material.dart'; 3 + import 'package:lazurite/core/theme/app_theme.dart'; 4 + 5 + class SettingsState extends Equatable { 6 + const SettingsState({required this.themePalette, required this.themeVariant, required this.useSystemTheme}); 7 + 8 + final AppThemePalette themePalette; 9 + final AppThemeVariant themeVariant; 10 + final bool useSystemTheme; 11 + 12 + ThemeData get themeData => AppTheme.getTheme(themePalette, themeVariant); 13 + 14 + SettingsState copyWith({AppThemePalette? themePalette, AppThemeVariant? themeVariant, bool? useSystemTheme}) { 15 + return SettingsState( 16 + themePalette: themePalette ?? this.themePalette, 17 + themeVariant: themeVariant ?? this.themeVariant, 18 + useSystemTheme: useSystemTheme ?? this.useSystemTheme, 19 + ); 20 + } 21 + 22 + @override 23 + List<Object?> get props => [themePalette, themeVariant, useSystemTheme]; 24 + }
+252 -6
lib/features/settings/presentation/settings_screen.dart
··· 1 1 import 'package:flutter/material.dart'; 2 2 import 'package:flutter_bloc/flutter_bloc.dart'; 3 3 import 'package:go_router/go_router.dart'; 4 + import 'package:lazurite/core/theme/app_theme.dart'; 4 5 import 'package:lazurite/features/auth/bloc/auth_bloc.dart'; 6 + import 'package:lazurite/features/settings/bloc/settings_cubit.dart'; 7 + import 'package:lazurite/features/settings/bloc/settings_state.dart'; 5 8 6 9 class SettingsScreen extends StatelessWidget { 7 10 const SettingsScreen({super.key}); ··· 9 12 @override 10 13 Widget build(BuildContext context) { 11 14 return Scaffold( 12 - appBar: AppBar(title: const Text('Settings')), 15 + appBar: AppBar( 16 + title: const Text('Settings'), 17 + actions: [ 18 + TextButton( 19 + onPressed: () { 20 + context.read<AuthBloc>().add(const LogoutRequested()); 21 + context.go('/login'); 22 + }, 23 + child: Text('Log Out', style: TextStyle(color: Theme.of(context).colorScheme.error)), 24 + ), 25 + ], 26 + ), 13 27 body: ListView( 14 28 children: [ 15 29 BlocBuilder<AuthBloc, AuthState>( ··· 20 34 } 21 35 22 36 return ListTile( 23 - leading: const CircleAvatar(child: Icon(Icons.person)), 37 + leading: CircleAvatar(child: Text((tokens.displayName ?? tokens.handle).substring(0, 1).toUpperCase())), 24 38 title: Text(tokens.displayName ?? tokens.handle), 25 39 subtitle: Text('@${tokens.handle}'), 26 40 trailing: const Icon(Icons.chevron_right), ··· 28 42 ); 29 43 }, 30 44 ), 31 - const Divider(), 32 - ListTile( 33 - leading: const Icon(Icons.logout), 34 - title: const Text('Logout'), 45 + const SizedBox(height: 24), 46 + _buildSectionHeader(context, 'Appearance'), 47 + _buildThemeSelector(context), 48 + const SizedBox(height: 24), 49 + _buildSectionHeader(context, 'Account'), 50 + _SettingsTile(icon: Icons.person_outline, title: 'Edit Profile', subtitle: 'Name, bio, avatar', onTap: () {}), 51 + _SettingsTile(icon: Icons.lock_outline, title: 'Privacy', subtitle: 'Visibility settings', onTap: () {}), 52 + const SizedBox(height: 24), 53 + _buildSectionHeader(context, 'Notifications'), 54 + _SettingsTile( 55 + icon: Icons.notifications_outlined, 56 + title: 'Push Notifications', 57 + trailing: Switch(value: true, onChanged: (_) {}), 58 + ), 59 + _SettingsTile( 60 + icon: Icons.email_outlined, 61 + title: 'Email Notifications', 62 + trailing: Switch(value: false, onChanged: (_) {}), 63 + ), 64 + const SizedBox(height: 24), 65 + _buildSectionHeader(context, 'About'), 66 + _SettingsTile(icon: Icons.code_outlined, title: 'Dev Tools', subtitle: 'PDS Explorer', onTap: () {}), 67 + _SettingsTile(icon: Icons.description_outlined, title: 'Logs', subtitle: 'View app log files', onTap: () {}), 68 + _SettingsTile(icon: Icons.help_outline, title: 'Help & Support', onTap: () {}), 69 + _SettingsTile(icon: Icons.security_outlined, title: 'Privacy Policy', onTap: () {}), 70 + const SizedBox(height: 24), 71 + _buildSectionHeader(context, 'Danger Zone'), 72 + _SettingsTile( 73 + icon: Icons.logout, 74 + title: 'Log Out', 75 + isDestructive: true, 35 76 onTap: () { 36 77 context.read<AuthBloc>().add(const LogoutRequested()); 37 78 context.go('/login'); 38 79 }, 39 80 ), 81 + const SizedBox(height: 24), 82 + Center(child: Text('Lazurite v1.0.0 (Phase 1)', style: Theme.of(context).textTheme.bodySmall)), 83 + const SizedBox(height: 24), 40 84 ], 41 85 ), 86 + ); 87 + } 88 + 89 + Widget _buildSectionHeader(BuildContext context, String title) { 90 + return Padding( 91 + padding: const EdgeInsets.fromLTRB(16, 0, 16, 8), 92 + child: Text( 93 + title.toUpperCase(), 94 + style: Theme.of(context).textTheme.labelSmall?.copyWith(fontWeight: FontWeight.w600, letterSpacing: 0.5), 95 + ), 96 + ); 97 + } 98 + 99 + Widget _buildThemeSelector(BuildContext context) { 100 + final settingsCubit = context.read<SettingsCubit>(); 101 + 102 + return Container( 103 + decoration: BoxDecoration( 104 + border: Border( 105 + top: BorderSide(color: Theme.of(context).dividerColor), 106 + bottom: BorderSide(color: Theme.of(context).dividerColor), 107 + ), 108 + color: Theme.of(context).cardColor, 109 + ), 110 + child: Column( 111 + children: [ 112 + Padding(padding: const EdgeInsets.all(16), child: _buildThemeGrid(context, settingsCubit)), 113 + const Divider(height: 1), 114 + BlocBuilder<SettingsCubit, SettingsState>( 115 + buildWhen: (prev, curr) => prev.useSystemTheme != curr.useSystemTheme, 116 + builder: (context, state) { 117 + return _SettingsTile( 118 + title: 'Auto', 119 + subtitle: 'Follow system theme', 120 + trailing: Switch( 121 + value: state.useSystemTheme, 122 + onChanged: (value) => settingsCubit.setUseSystemTheme(value), 123 + ), 124 + ); 125 + }, 126 + ), 127 + ], 128 + ), 129 + ); 130 + } 131 + 132 + Widget _buildThemeGrid(BuildContext context, SettingsCubit settingsCubit) { 133 + return BlocBuilder<SettingsCubit, SettingsState>( 134 + builder: (context, state) { 135 + return Column( 136 + children: [ 137 + _buildThemeRow(context, settingsCubit, 'Oxocarbon', AppThemePalette.oxocarbon, state), 138 + const SizedBox(height: 16), 139 + _buildThemeRow(context, settingsCubit, 'Catppuccin', AppThemePalette.catppuccin, state), 140 + const SizedBox(height: 16), 141 + _buildThemeRow(context, settingsCubit, 'Nord', AppThemePalette.nord, state), 142 + const SizedBox(height: 16), 143 + _buildThemeRow(context, settingsCubit, 'Rosé Pine', AppThemePalette.rosePine, state), 144 + ], 145 + ); 146 + }, 147 + ); 148 + } 149 + 150 + Widget _buildThemeRow( 151 + BuildContext context, 152 + SettingsCubit settingsCubit, 153 + String label, 154 + AppThemePalette palette, 155 + SettingsState state, 156 + ) { 157 + return Column( 158 + crossAxisAlignment: CrossAxisAlignment.start, 159 + children: [ 160 + Text( 161 + label.toUpperCase(), 162 + style: Theme.of(context).textTheme.labelSmall?.copyWith(fontWeight: FontWeight.w600, letterSpacing: 0.5), 163 + ), 164 + const SizedBox(height: 8), 165 + Row( 166 + children: [ 167 + Expanded( 168 + child: _ThemeOption( 169 + palette: palette, 170 + variant: AppThemeVariant.light, 171 + label: 'Light', 172 + isSelected: state.themePalette == palette && state.themeVariant == AppThemeVariant.light, 173 + onTap: () => settingsCubit.setTheme(palette, AppThemeVariant.light), 174 + ), 175 + ), 176 + const SizedBox(width: 8), 177 + Expanded( 178 + child: _ThemeOption( 179 + palette: palette, 180 + variant: AppThemeVariant.dark, 181 + label: 'Dark', 182 + isSelected: state.themePalette == palette && state.themeVariant == AppThemeVariant.dark, 183 + onTap: () => settingsCubit.setTheme(palette, AppThemeVariant.dark), 184 + ), 185 + ), 186 + ], 187 + ), 188 + ], 189 + ); 190 + } 191 + } 192 + 193 + class _ThemeOption extends StatelessWidget { 194 + const _ThemeOption({ 195 + required this.palette, 196 + required this.variant, 197 + required this.label, 198 + required this.isSelected, 199 + required this.onTap, 200 + }); 201 + 202 + final AppThemePalette palette; 203 + final AppThemeVariant variant; 204 + final String label; 205 + final bool isSelected; 206 + final VoidCallback onTap; 207 + 208 + @override 209 + Widget build(BuildContext context) { 210 + final theme = AppTheme.getTheme(palette, variant); 211 + 212 + return InkWell( 213 + onTap: onTap, 214 + borderRadius: BorderRadius.circular(12), 215 + child: Container( 216 + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 12), 217 + decoration: BoxDecoration( 218 + borderRadius: BorderRadius.circular(12), 219 + color: isSelected ? Theme.of(context).colorScheme.surfaceContainerHighest : null, 220 + ), 221 + child: Column( 222 + children: [ 223 + Container( 224 + width: 64, 225 + height: 64, 226 + decoration: BoxDecoration( 227 + borderRadius: BorderRadius.circular(12), 228 + border: Border.all( 229 + color: isSelected 230 + ? Theme.of(context).colorScheme.primary 231 + : Theme.of(context).colorScheme.outlineVariant, 232 + width: isSelected ? 2 : 1, 233 + ), 234 + color: theme.scaffoldBackgroundColor, 235 + ), 236 + child: Stack( 237 + children: [ 238 + if (isSelected) 239 + Positioned( 240 + bottom: 4, 241 + right: 4, 242 + child: Container( 243 + width: 20, 244 + height: 20, 245 + decoration: BoxDecoration(color: Theme.of(context).colorScheme.primary, shape: BoxShape.circle), 246 + child: Icon(Icons.check, size: 12, color: Theme.of(context).colorScheme.onPrimary), 247 + ), 248 + ), 249 + ], 250 + ), 251 + ), 252 + const SizedBox(height: 8), 253 + Text(label, style: Theme.of(context).textTheme.labelMedium), 254 + ], 255 + ), 256 + ), 257 + ); 258 + } 259 + } 260 + 261 + class _SettingsTile extends StatelessWidget { 262 + const _SettingsTile({ 263 + required this.title, 264 + this.subtitle, 265 + this.icon, 266 + this.trailing, 267 + this.isDestructive = false, 268 + this.onTap, 269 + }); 270 + 271 + final String title; 272 + final String? subtitle; 273 + final IconData? icon; 274 + final Widget? trailing; 275 + final bool isDestructive; 276 + final VoidCallback? onTap; 277 + 278 + @override 279 + Widget build(BuildContext context) { 280 + final color = isDestructive ? Theme.of(context).colorScheme.error : null; 281 + 282 + return ListTile( 283 + leading: icon != null ? Icon(icon, color: color) : null, 284 + title: Text(title, style: TextStyle(color: color)), 285 + subtitle: subtitle != null ? Text(subtitle!) : null, 286 + trailing: trailing ?? (onTap != null ? const Icon(Icons.chevron_right) : null), 287 + onTap: onTap, 42 288 ); 43 289 } 44 290 }
+30 -9
lib/main.dart
··· 4 4 import 'package:flutter_bloc/flutter_bloc.dart'; 5 5 import 'package:lazurite/core/database/app_database.dart'; 6 6 import 'package:lazurite/core/router/app_router.dart'; 7 + import 'package:lazurite/core/theme/app_theme.dart'; 7 8 import 'package:lazurite/features/auth/bloc/auth_bloc.dart'; 8 9 import 'package:lazurite/features/auth/data/auth_repository.dart'; 9 10 import 'package:lazurite/features/feed/bloc/feed_bloc.dart'; 10 11 import 'package:lazurite/features/feed/data/feed_repository.dart'; 11 12 import 'package:lazurite/features/profile/bloc/profile_bloc.dart'; 12 13 import 'package:lazurite/features/profile/data/profile_repository.dart'; 14 + import 'package:lazurite/features/settings/bloc/settings_cubit.dart'; 15 + import 'package:lazurite/features/settings/bloc/settings_state.dart'; 13 16 14 17 Future<void> main() async { 15 18 WidgetsFlutterBinding.ensureInitialized(); ··· 24 27 : const AuthState.unauthenticated(), 25 28 ); 26 29 27 - runApp(LazuriteApp(authBloc: authBloc, database: database)); 30 + final settingsCubit = SettingsCubit(database: database); 31 + await settingsCubit.loadSettings(); 32 + 33 + runApp(LazuriteApp(authBloc: authBloc, database: database, settingsCubit: settingsCubit)); 28 34 } 29 35 30 36 class LazuriteApp extends StatelessWidget { 31 - const LazuriteApp({super.key, required this.authBloc, required this.database}); 37 + const LazuriteApp({super.key, required this.authBloc, required this.database, required this.settingsCubit}); 32 38 33 39 final AuthBloc authBloc; 34 40 final AppDatabase database; 41 + final SettingsCubit settingsCubit; 35 42 36 43 Bluesky? _createBluesky(AuthState state) { 37 44 if (!state.isAuthenticated || state.tokens == null) { ··· 73 80 Widget build(BuildContext context) { 74 81 final router = AppRouter(authBloc: authBloc).router; 75 82 76 - return BlocProvider.value( 77 - value: authBloc, 83 + return MultiBlocProvider( 84 + providers: [ 85 + BlocProvider.value(value: authBloc), 86 + BlocProvider.value(value: settingsCubit), 87 + ], 78 88 child: BlocBuilder<AuthBloc, AuthState>( 79 89 builder: (context, authState) { 80 90 final bluesky = _createBluesky(authState); ··· 92 102 ), 93 103 ], 94 104 ], 95 - child: MaterialApp.router( 96 - title: 'Lazurite', 97 - debugShowCheckedModeBanner: false, 98 - theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue), useMaterial3: true), 99 - routerConfig: router, 105 + child: BlocBuilder<SettingsCubit, SettingsState>( 106 + builder: (context, settingsState) { 107 + final themeData = settingsState.themeData; 108 + final themeMode = settingsState.useSystemTheme 109 + ? ThemeMode.system 110 + : (settingsState.themeVariant == AppThemeVariant.light ? ThemeMode.light : ThemeMode.dark); 111 + 112 + return MaterialApp.router( 113 + title: 'Lazurite', 114 + debugShowCheckedModeBanner: false, 115 + theme: themeData, 116 + darkTheme: themeData, 117 + themeMode: themeMode, 118 + routerConfig: router, 119 + ); 120 + }, 100 121 ), 101 122 ); 102 123 },
+8
pubspec.lock
··· 432 432 url: "https://pub.dev" 433 433 source: hosted 434 434 version: "17.1.0" 435 + google_fonts: 436 + dependency: "direct main" 437 + description: 438 + name: google_fonts 439 + sha256: ba03d03bcaa2f6cb7bd920e3b5027181db75ab524f8891c8bc3aa603885b8055 440 + url: "https://pub.dev" 441 + source: hosted 442 + version: "6.3.3" 435 443 graphs: 436 444 dependency: transitive 437 445 description:
+1
pubspec.yaml
··· 27 27 crypto: ^3.0.6 28 28 url_launcher: ^6.3.1 29 29 intl: ^0.19.0 30 + google_fonts: ^6.2.1 30 31 31 32 dev_dependencies: 32 33 flutter_test: