Merge pull request #336 from LemmurOrg/feat/flutter-3

This commit is contained in:
Marcin Wojnarowski 2022-07-21 11:22:44 +02:00 committed by GitHub
commit 44cd556fef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
63 changed files with 342 additions and 297 deletions

View File

@ -69,7 +69,7 @@ jobs:
steps:
- uses: actions/checkout@v2
- uses: subosito/flutter-action@v1
- uses: subosito/flutter-action@v2
with:
channel: "stable"
@ -91,10 +91,6 @@ jobs:
sudo apt-get update -y
sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev libblkid-dev
- name: Enable linux support
run: |
flutter config --enable-linux-desktop
- name: Build
run: |
flutter build linux --release --target lib/main_prod.dart

View File

@ -90,10 +90,6 @@ jobs:
sudo apt-get update -y
sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev libblkid-dev
- name: Enable linux support
run: |
flutter config --enable-linux-desktop
- name: Build
run: |
flutter build linux --release --target lib/main_prod.dart

View File

@ -44,11 +44,7 @@ The apk will be in `build/app/outputs/flutter-apk/app-prod-release.apk`
### Linux
1. Make sure you have the additional [linux requirements](https://flutter.dev/desktop#additional-linux-requirements) (verify with `flutter doctor`)
2. Enable linux desktop:
```sh
flutter config --enable-linux-desktop
```
3. Build: `flutter build linux --target lib/main_prod.dart --release`
2. Build: `flutter build linux --target lib/main_prod.dart --release`
The executable will be in `build/linux/x64/release/bundle/lemmur` (be aware, however, that this executable is not standalone)

View File

@ -112,12 +112,15 @@ linter:
- unnecessary_string_interpolations
- unnecessary_this
- unrelated_type_equality_checks
- use_colored_box
- use_enums
- use_full_hex_values_for_flutter_colors
- use_is_even_rather_than_modulo
- use_named_constants
- use_raw_strings
- use_rethrow_when_possible
- use_setters_to_change_properties
- use_super_parameters
- use_test_throws_matchers
- use_to_and_as_if_applicable
- void_checks

View File

@ -26,7 +26,7 @@ apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 31
compileSdkVersion Math.max(flutter.compileSdkVersion, 32)
lintOptions {
disable 'InvalidPackage'
@ -47,8 +47,8 @@ android {
defaultConfig {
applicationId "com.krawieck.lemmur"
minSdkVersion 16
targetSdkVersion 30
minSdkVersion Math.max(flutter.minSdkVersion, 16)
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}

View File

@ -13,6 +13,7 @@
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"

View File

@ -1,12 +1,12 @@
buildscript {
ext.kotlin_version = '1.5.31'
ext.kotlin_version = '1.7.0'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.2'
classpath 'com.android.tools.build:gradle:7.2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}

View File

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip

View File

@ -1,4 +1,38 @@
PODS:
- DKImagePickerController/Core (4.3.3):
- DKImagePickerController/ImageDataManager
- DKImagePickerController/Resource
- DKImagePickerController/ImageDataManager (4.3.3)
- DKImagePickerController/PhotoGallery (4.3.3):
- DKImagePickerController/Core
- DKPhotoGallery
- DKImagePickerController/Resource (4.3.3)
- DKPhotoGallery (0.0.17):
- DKPhotoGallery/Core (= 0.0.17)
- DKPhotoGallery/Model (= 0.0.17)
- DKPhotoGallery/Preview (= 0.0.17)
- DKPhotoGallery/Resource (= 0.0.17)
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Core (0.0.17):
- DKPhotoGallery/Model
- DKPhotoGallery/Preview
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Model (0.0.17):
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Preview (0.0.17):
- DKPhotoGallery/Model
- DKPhotoGallery/Resource
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Resource (0.0.17):
- SDWebImage
- SwiftyGif
- file_picker (0.0.1):
- DKImagePickerController/PhotoGallery
- Flutter
- Flutter (1.0.0)
- flutter_keyboard_visibility (0.0.1):
- Flutter
@ -8,14 +42,19 @@ PODS:
- Flutter
- path_provider_ios (0.0.1):
- Flutter
- SDWebImage (5.12.5):
- SDWebImage/Core (= 5.12.5)
- SDWebImage/Core (5.12.5)
- share_plus (0.0.1):
- Flutter
- shared_preferences_ios (0.0.1):
- Flutter
- SwiftyGif (5.4.3)
- url_launcher_ios (0.0.1):
- Flutter
DEPENDENCIES:
- file_picker (from `.symlinks/plugins/file_picker/ios`)
- Flutter (from `Flutter`)
- flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
@ -25,7 +64,16 @@ DEPENDENCIES:
- shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
SPEC REPOS:
trunk:
- DKImagePickerController
- DKPhotoGallery
- SDWebImage
- SwiftyGif
EXTERNAL SOURCES:
file_picker:
:path: ".symlinks/plugins/file_picker/ios"
Flutter:
:path: Flutter
flutter_keyboard_visibility:
@ -44,13 +92,18 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/url_launcher_ios/ios"
SPEC CHECKSUMS:
DKImagePickerController: 72fd378f244cef3d27288e0aebf217a4467e4012
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
file_picker: 3e6c3790de664ccf9b882732d9db5eaf6b8d4eb1
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069
image_picker_ios: b786a5dcf033a8336a657191401bfdf12017dabb
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02
SDWebImage: 0905f1b7760fc8ac4198cae0036600d67478751e
share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68
shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad
SwiftyGif: 6c3eafd0ce693cad58bb63d2b2fb9bacb8552780
url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de
PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c

View File

@ -23,7 +23,7 @@
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<true />
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
@ -42,7 +42,9 @@
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<false />
<key>CADisableMinimumFrameDurationOnPhone</key>
<true />
<!-- Image picker -->
<key>NSPhotoLibraryUsageDescription</key>

View File

@ -7,10 +7,8 @@ enum CommentSortType {
top,
new_,
old,
chat,
}
chat;
extension on CommentSortType {
/// returns a compare function for sorting a CommentTree according
/// to the comment sort type
int Function(CommentTree a, CommentTree b) get sortFunction {

View File

@ -11,8 +11,11 @@ class CommunitiesListPage extends StatelessWidget {
final String title;
final FetcherWithSorting<CommunityView> fetcher;
const CommunitiesListPage({Key? key, required this.fetcher, this.title = ''})
: super(key: key);
const CommunitiesListPage({
super.key,
required this.fetcher,
this.title = '',
});
@override
Widget build(BuildContext context) {
@ -42,8 +45,7 @@ class CommunitiesListPage extends StatelessWidget {
class CommunitiesListItem extends StatelessWidget {
final CommunityView community;
const CommunitiesListItem({Key? key, required this.community})
: super(key: key);
const CommunitiesListItem({super.key, required this.community});
@override
Widget build(BuildContext context) => ListTile(

View File

@ -241,9 +241,11 @@ class _CommunitySubscribeToggle extends HookWidget {
final int communityId;
final String instanceHost;
const _CommunitySubscribeToggle(
{required this.instanceHost, required this.communityId, Key? key})
: super(key: key);
const _CommunitySubscribeToggle({
required this.instanceHost,
required this.communityId,
super.key,
});
@override
Widget build(BuildContext context) {

View File

@ -15,8 +15,7 @@ import 'community_store.dart';
class CommmunityAboutTab extends StatelessWidget {
final FullCommunityView fullCommunityView;
const CommmunityAboutTab(this.fullCommunityView, {Key? key})
: super(key: key);
const CommmunityAboutTab(this.fullCommunityView, {super.key});
@override
Widget build(BuildContext context) {

View File

@ -14,8 +14,7 @@ import 'community_store.dart';
class CommunityMoreMenu extends HookWidget {
final FullCommunityView fullCommunityView;
const CommunityMoreMenu({Key? key, required this.fullCommunityView})
: super(key: key);
const CommunityMoreMenu({super.key, required this.fullCommunityView});
@override
Widget build(BuildContext context) {

View File

@ -6,7 +6,7 @@ part of 'community_store.dart';
// StoreGenerator
// **************************************************************************
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic, no_leading_underscores_for_local_identifiers
mixin _$CommunityStore on _CommunityStore, Store {
late final _$refreshAsyncAction =

View File

@ -13,7 +13,7 @@ import '../../widgets/avatar.dart';
import 'create_post_store.dart';
class CreatePostCommunityPicker extends HookWidget {
const CreatePostCommunityPicker({Key? key}) : super(key: key);
const CreatePostCommunityPicker({super.key});
@override
Widget build(BuildContext context) {

View File

@ -6,7 +6,7 @@ import '../../widgets/radio_picker.dart';
import 'create_post_store.dart';
class CreatePostInstancePicker extends StatelessWidget {
const CreatePostInstancePicker({Key? key}) : super(key: key);
const CreatePostInstancePicker({super.key});
@override
Widget build(BuildContext context) {

View File

@ -16,6 +16,7 @@ abstract class _CreatePostStore with Store {
_CreatePostStore({
required this.instanceHost,
this.postToEdit,
// ignore: unused_element
this.selectedCommunity,
}) : title = postToEdit?.name ?? '',
nsfw = postToEdit?.nsfw ?? false,

View File

@ -6,7 +6,7 @@ part of 'create_post_store.dart';
// StoreGenerator
// **************************************************************************
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic, no_leading_underscores_for_local_identifiers
mixin _$CreatePostStore on _CreatePostStore, Store {
Computed<bool>? _$hasUploadedImageComputed;
@ -17,7 +17,8 @@ mixin _$CreatePostStore on _CreatePostStore, Store {
name: '_CreatePostStore.hasUploadedImage'))
.value;
final _$showFancyAtom = Atom(name: '_CreatePostStore.showFancy');
late final _$showFancyAtom =
Atom(name: '_CreatePostStore.showFancy', context: context);
@override
bool get showFancy {
@ -32,7 +33,8 @@ mixin _$CreatePostStore on _CreatePostStore, Store {
});
}
final _$instanceHostAtom = Atom(name: '_CreatePostStore.instanceHost');
late final _$instanceHostAtom =
Atom(name: '_CreatePostStore.instanceHost', context: context);
@override
String get instanceHost {
@ -47,8 +49,8 @@ mixin _$CreatePostStore on _CreatePostStore, Store {
});
}
final _$selectedCommunityAtom =
Atom(name: '_CreatePostStore.selectedCommunity');
late final _$selectedCommunityAtom =
Atom(name: '_CreatePostStore.selectedCommunity', context: context);
@override
CommunityView? get selectedCommunity {
@ -63,7 +65,7 @@ mixin _$CreatePostStore on _CreatePostStore, Store {
});
}
final _$urlAtom = Atom(name: '_CreatePostStore.url');
late final _$urlAtom = Atom(name: '_CreatePostStore.url', context: context);
@override
String get url {
@ -78,7 +80,8 @@ mixin _$CreatePostStore on _CreatePostStore, Store {
});
}
final _$titleAtom = Atom(name: '_CreatePostStore.title');
late final _$titleAtom =
Atom(name: '_CreatePostStore.title', context: context);
@override
String get title {
@ -93,7 +96,7 @@ mixin _$CreatePostStore on _CreatePostStore, Store {
});
}
final _$bodyAtom = Atom(name: '_CreatePostStore.body');
late final _$bodyAtom = Atom(name: '_CreatePostStore.body', context: context);
@override
String get body {
@ -108,7 +111,7 @@ mixin _$CreatePostStore on _CreatePostStore, Store {
});
}
final _$nsfwAtom = Atom(name: '_CreatePostStore.nsfw');
late final _$nsfwAtom = Atom(name: '_CreatePostStore.nsfw', context: context);
@override
bool get nsfw {
@ -123,14 +126,16 @@ mixin _$CreatePostStore on _CreatePostStore, Store {
});
}
final _$submitAsyncAction = AsyncAction('_CreatePostStore.submit');
late final _$submitAsyncAction =
AsyncAction('_CreatePostStore.submit', context: context);
@override
Future<void> submit(Jwt token) {
return _$submitAsyncAction.run(() => super.submit(token));
}
final _$uploadImageAsyncAction = AsyncAction('_CreatePostStore.uploadImage');
late final _$uploadImageAsyncAction =
AsyncAction('_CreatePostStore.uploadImage', context: context);
@override
Future<void> uploadImage(String filePath, Jwt token) {
@ -138,8 +143,8 @@ mixin _$CreatePostStore on _CreatePostStore, Store {
.run(() => super.uploadImage(filePath, token));
}
final _$_CreatePostStoreActionController =
ActionController(name: '_CreatePostStore');
late final _$_CreatePostStoreActionController =
ActionController(name: '_CreatePostStore', context: context);
@override
Future<List<CommunityView>?> searchCommunities(

View File

@ -27,7 +27,7 @@ class CommentSection extends StatelessWidget {
CommentSortType.chat: _SortSelection(Icons.chat, L10nStrings.chat),
};
const CommentSection({Key? key}) : super(key: key);
const CommentSection({super.key});
@override
Widget build(BuildContext context) {

View File

@ -14,7 +14,6 @@ abstract class _FullPostStore with Store {
final String instanceHost;
_FullPostStore({
this.postStore,
required this.postId,
required this.instanceHost,
});

View File

@ -6,7 +6,7 @@ part of 'full_post_store.dart';
// StoreGenerator
// **************************************************************************
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic, no_leading_underscores_for_local_identifiers
mixin _$FullPostStore on _FullPostStore, Store {
Computed<List<CommentTree>?>? _$commentTreeComputed;

View File

@ -11,7 +11,7 @@ import '../../widgets/info_table_popup.dart';
class InstanceMoreMenu extends StatelessWidget {
final FullSiteView site;
const InstanceMoreMenu({Key? key, required this.site}) : super(key: key);
const InstanceMoreMenu({super.key, required this.site});
@override
Widget build(BuildContext context) {

View File

@ -6,7 +6,7 @@ part of 'instance_store.dart';
// StoreGenerator
// **************************************************************************
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic, no_leading_underscores_for_local_identifiers
mixin _$InstanceStore on _InstanceStore, Store {
late final _$fetchAsyncAction =

View File

@ -6,7 +6,7 @@ part of 'log_console_page_store.dart';
// StoreGenerator
// **************************************************************************
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic, no_leading_underscores_for_local_identifiers
mixin _$LogConsolePageStore on _LogConsolePageStore, Store {
late final _$_LogConsolePageStoreActionController =

View File

@ -86,7 +86,7 @@ class ManageAccountPage extends HookWidget {
}
class _ManageAccount extends HookWidget {
const _ManageAccount({Key? key, required this.user}) : super(key: key);
const _ManageAccount({required this.user});
final LocalUserSettingsView user;
@ -396,13 +396,12 @@ class _ImagePicker extends HookWidget {
final ObjectRef<VoidCallback?> informAcceptedRef;
const _ImagePicker({
Key? key,
required this.initialUrl,
required this.name,
required this.user,
required this.onChange,
required this.informAcceptedRef,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@ -12,6 +12,7 @@ abstract class _ModlogPageStore with Store, DisposableStore {
final String instanceHost;
final int? communityId;
// ignore: unused_element
_ModlogPageStore(this.instanceHost, [this.communityId]) {
addReaction(reaction((_) => page, (_) => fetchPage()));
}

View File

@ -6,7 +6,7 @@ part of 'modlog_page_store.dart';
// StoreGenerator
// **************************************************************************
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic, no_leading_underscores_for_local_identifiers
mixin _$ModlogPageStore on _ModlogPageStore, Store {
Computed<bool>? _$hasPreviousPageComputed;

View File

@ -8,7 +8,7 @@ import '../../widgets/avatar.dart';
import 'modlog_entry.dart';
class ModlogTable extends StatelessWidget {
const ModlogTable({Key? key, required this.modlog}) : super(key: key);
const ModlogTable({super.key, required this.modlog});
final Modlog modlog;

View File

@ -10,7 +10,7 @@ import 'community_block_store.dart';
import 'user_block_store.dart';
class BlockPersonTile extends StatelessWidget {
const BlockPersonTile({Key? key}) : super(key: key);
const BlockPersonTile({super.key});
@override
Widget build(BuildContext context) {
@ -40,7 +40,7 @@ class BlockPersonTile extends StatelessWidget {
}
class BlockCommunityTile extends HookWidget {
const BlockCommunityTile({Key? key}) : super(key: key);
const BlockCommunityTile({super.key});
@override
Widget build(BuildContext context) {

View File

@ -6,7 +6,7 @@ part of 'blocks_store.dart';
// StoreGenerator
// **************************************************************************
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic, no_leading_underscores_for_local_identifiers
mixin _$BlocksStore on _BlocksStore, Store {
Computed<Iterable<UserBlockStore>?>? _$blockedUsersComputed;

View File

@ -6,7 +6,7 @@ part of 'community_block_store.dart';
// StoreGenerator
// **************************************************************************
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic, no_leading_underscores_for_local_identifiers
mixin _$CommunityBlockStore on _CommunityBlockStore, Store {
late final _$blockedAtom =

View File

@ -6,7 +6,7 @@ part of 'user_block_store.dart';
// StoreGenerator
// **************************************************************************
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic, no_leading_underscores_for_local_identifiers
mixin _$UserBlockStore on _UserBlockStore, Store {
late final _$blockedAtom =

View File

@ -185,10 +185,9 @@ class _AccountOptions extends HookWidget {
final String username;
const _AccountOptions({
Key? key,
required this.instanceHost,
required this.username,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@ -12,8 +12,7 @@ class UsersListPage extends StatelessWidget {
final String title;
final Fetcher<PersonViewSafe> fetcher;
const UsersListPage({Key? key, required this.fetcher, this.title = ''})
: super(key: key);
const UsersListPage({super.key, required this.fetcher, this.title = ''});
@override
Widget build(BuildContext context) {
@ -41,7 +40,7 @@ class UsersListPage extends StatelessWidget {
class UsersListItem extends StatelessWidget {
final PersonViewSafe user;
const UsersListItem({Key? key, required this.user}) : super(key: key);
const UsersListItem({super.key, required this.user});
@override
Widget build(BuildContext context) {

View File

@ -19,7 +19,7 @@ ConfigStore _$ConfigStoreFromJson(Map<String, dynamic> json) => ConfigStore()
Map<String, dynamic> _$ConfigStoreToJson(ConfigStore instance) =>
<String, dynamic>{
'theme': _$ThemeModeEnumMap[instance.theme],
'theme': _$ThemeModeEnumMap[instance.theme]!,
'amoledDarkMode': instance.amoledDarkMode,
'locale': const LocaleConverter().toJson(instance.locale),
'showAvatars': instance.showAvatars,
@ -38,7 +38,7 @@ const _$ThemeModeEnumMap = {
// StoreGenerator
// **************************************************************************
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic, no_leading_underscores_for_local_identifiers
mixin _$ConfigStore on _ConfigStore, Store {
late final _$themeAtom = Atom(name: '_ConfigStore.theme', context: context);

View File

@ -86,22 +86,22 @@ class _$AsyncStateCopyWithImpl<T, $Res>
}
/// @nodoc
abstract class $AsyncStateInitialCopyWith<T, $Res> {
factory $AsyncStateInitialCopyWith(AsyncStateInitial<T> value,
$Res Function(AsyncStateInitial<T>) then) =
_$AsyncStateInitialCopyWithImpl<T, $Res>;
abstract class _$$AsyncStateInitialCopyWith<T, $Res> {
factory _$$AsyncStateInitialCopyWith(_$AsyncStateInitial<T> value,
$Res Function(_$AsyncStateInitial<T>) then) =
__$$AsyncStateInitialCopyWithImpl<T, $Res>;
}
/// @nodoc
class _$AsyncStateInitialCopyWithImpl<T, $Res>
class __$$AsyncStateInitialCopyWithImpl<T, $Res>
extends _$AsyncStateCopyWithImpl<T, $Res>
implements $AsyncStateInitialCopyWith<T, $Res> {
_$AsyncStateInitialCopyWithImpl(
AsyncStateInitial<T> _value, $Res Function(AsyncStateInitial<T>) _then)
: super(_value, (v) => _then(v as AsyncStateInitial<T>));
implements _$$AsyncStateInitialCopyWith<T, $Res> {
__$$AsyncStateInitialCopyWithImpl(_$AsyncStateInitial<T> _value,
$Res Function(_$AsyncStateInitial<T>) _then)
: super(_value, (v) => _then(v as _$AsyncStateInitial<T>));
@override
AsyncStateInitial<T> get _value => super._value as AsyncStateInitial<T>;
_$AsyncStateInitial<T> get _value => super._value as _$AsyncStateInitial<T>;
}
/// @nodoc
@ -125,7 +125,7 @@ class _$AsyncStateInitial<T>
@override
bool operator ==(dynamic other) {
return identical(this, other) ||
(other.runtimeType == runtimeType && other is AsyncStateInitial<T>);
(other.runtimeType == runtimeType && other is _$AsyncStateInitial<T>);
}
@override
@ -211,30 +211,30 @@ abstract class AsyncStateInitial<T> implements AsyncState<T> {
}
/// @nodoc
abstract class $AsyncStateDataCopyWith<T, $Res> {
factory $AsyncStateDataCopyWith(
AsyncStateData<T> value, $Res Function(AsyncStateData<T>) then) =
_$AsyncStateDataCopyWithImpl<T, $Res>;
abstract class _$$AsyncStateDataCopyWith<T, $Res> {
factory _$$AsyncStateDataCopyWith(
_$AsyncStateData<T> value, $Res Function(_$AsyncStateData<T>) then) =
__$$AsyncStateDataCopyWithImpl<T, $Res>;
$Res call({T data, String? errorTerm});
}
/// @nodoc
class _$AsyncStateDataCopyWithImpl<T, $Res>
class __$$AsyncStateDataCopyWithImpl<T, $Res>
extends _$AsyncStateCopyWithImpl<T, $Res>
implements $AsyncStateDataCopyWith<T, $Res> {
_$AsyncStateDataCopyWithImpl(
AsyncStateData<T> _value, $Res Function(AsyncStateData<T>) _then)
: super(_value, (v) => _then(v as AsyncStateData<T>));
implements _$$AsyncStateDataCopyWith<T, $Res> {
__$$AsyncStateDataCopyWithImpl(
_$AsyncStateData<T> _value, $Res Function(_$AsyncStateData<T>) _then)
: super(_value, (v) => _then(v as _$AsyncStateData<T>));
@override
AsyncStateData<T> get _value => super._value as AsyncStateData<T>;
_$AsyncStateData<T> get _value => super._value as _$AsyncStateData<T>;
@override
$Res call({
Object? data = freezed,
Object? errorTerm = freezed,
}) {
return _then(AsyncStateData<T>(
return _then(_$AsyncStateData<T>(
data == freezed
? _value.data
: data // ignore: cast_nullable_to_non_nullable
@ -277,7 +277,7 @@ class _$AsyncStateData<T>
bool operator ==(dynamic other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is AsyncStateData<T> &&
other is _$AsyncStateData<T> &&
const DeepCollectionEquality().equals(other.data, data) &&
const DeepCollectionEquality().equals(other.errorTerm, errorTerm));
}
@ -290,8 +290,8 @@ class _$AsyncStateData<T>
@JsonKey(ignore: true)
@override
$AsyncStateDataCopyWith<T, AsyncStateData<T>> get copyWith =>
_$AsyncStateDataCopyWithImpl<T, AsyncStateData<T>>(this, _$identity);
_$$AsyncStateDataCopyWith<T, _$AsyncStateData<T>> get copyWith =>
__$$AsyncStateDataCopyWithImpl<T, _$AsyncStateData<T>>(this, _$identity);
@override
@optionalTypeArgs
@ -372,30 +372,30 @@ abstract class AsyncStateData<T> implements AsyncState<T> {
const factory AsyncStateData(final T data, [final String? errorTerm]) =
_$AsyncStateData<T>;
T get data => throw _privateConstructorUsedError;
String? get errorTerm => throw _privateConstructorUsedError;
T get data;
String? get errorTerm;
@JsonKey(ignore: true)
$AsyncStateDataCopyWith<T, AsyncStateData<T>> get copyWith =>
_$$AsyncStateDataCopyWith<T, _$AsyncStateData<T>> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $AsyncStateLoadingCopyWith<T, $Res> {
factory $AsyncStateLoadingCopyWith(AsyncStateLoading<T> value,
$Res Function(AsyncStateLoading<T>) then) =
_$AsyncStateLoadingCopyWithImpl<T, $Res>;
abstract class _$$AsyncStateLoadingCopyWith<T, $Res> {
factory _$$AsyncStateLoadingCopyWith(_$AsyncStateLoading<T> value,
$Res Function(_$AsyncStateLoading<T>) then) =
__$$AsyncStateLoadingCopyWithImpl<T, $Res>;
}
/// @nodoc
class _$AsyncStateLoadingCopyWithImpl<T, $Res>
class __$$AsyncStateLoadingCopyWithImpl<T, $Res>
extends _$AsyncStateCopyWithImpl<T, $Res>
implements $AsyncStateLoadingCopyWith<T, $Res> {
_$AsyncStateLoadingCopyWithImpl(
AsyncStateLoading<T> _value, $Res Function(AsyncStateLoading<T>) _then)
: super(_value, (v) => _then(v as AsyncStateLoading<T>));
implements _$$AsyncStateLoadingCopyWith<T, $Res> {
__$$AsyncStateLoadingCopyWithImpl(_$AsyncStateLoading<T> _value,
$Res Function(_$AsyncStateLoading<T>) _then)
: super(_value, (v) => _then(v as _$AsyncStateLoading<T>));
@override
AsyncStateLoading<T> get _value => super._value as AsyncStateLoading<T>;
_$AsyncStateLoading<T> get _value => super._value as _$AsyncStateLoading<T>;
}
/// @nodoc
@ -419,7 +419,7 @@ class _$AsyncStateLoading<T>
@override
bool operator ==(dynamic other) {
return identical(this, other) ||
(other.runtimeType == runtimeType && other is AsyncStateLoading<T>);
(other.runtimeType == runtimeType && other is _$AsyncStateLoading<T>);
}
@override
@ -505,29 +505,29 @@ abstract class AsyncStateLoading<T> implements AsyncState<T> {
}
/// @nodoc
abstract class $AsyncStateErrorCopyWith<T, $Res> {
factory $AsyncStateErrorCopyWith(
AsyncStateError<T> value, $Res Function(AsyncStateError<T>) then) =
_$AsyncStateErrorCopyWithImpl<T, $Res>;
abstract class _$$AsyncStateErrorCopyWith<T, $Res> {
factory _$$AsyncStateErrorCopyWith(_$AsyncStateError<T> value,
$Res Function(_$AsyncStateError<T>) then) =
__$$AsyncStateErrorCopyWithImpl<T, $Res>;
$Res call({String errorTerm});
}
/// @nodoc
class _$AsyncStateErrorCopyWithImpl<T, $Res>
class __$$AsyncStateErrorCopyWithImpl<T, $Res>
extends _$AsyncStateCopyWithImpl<T, $Res>
implements $AsyncStateErrorCopyWith<T, $Res> {
_$AsyncStateErrorCopyWithImpl(
AsyncStateError<T> _value, $Res Function(AsyncStateError<T>) _then)
: super(_value, (v) => _then(v as AsyncStateError<T>));
implements _$$AsyncStateErrorCopyWith<T, $Res> {
__$$AsyncStateErrorCopyWithImpl(
_$AsyncStateError<T> _value, $Res Function(_$AsyncStateError<T>) _then)
: super(_value, (v) => _then(v as _$AsyncStateError<T>));
@override
AsyncStateError<T> get _value => super._value as AsyncStateError<T>;
_$AsyncStateError<T> get _value => super._value as _$AsyncStateError<T>;
@override
$Res call({
Object? errorTerm = freezed,
}) {
return _then(AsyncStateError<T>(
return _then(_$AsyncStateError<T>(
errorTerm == freezed
? _value.errorTerm
: errorTerm // ignore: cast_nullable_to_non_nullable
@ -563,7 +563,7 @@ class _$AsyncStateError<T>
bool operator ==(dynamic other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is AsyncStateError<T> &&
other is _$AsyncStateError<T> &&
const DeepCollectionEquality().equals(other.errorTerm, errorTerm));
}
@ -573,8 +573,9 @@ class _$AsyncStateError<T>
@JsonKey(ignore: true)
@override
$AsyncStateErrorCopyWith<T, AsyncStateError<T>> get copyWith =>
_$AsyncStateErrorCopyWithImpl<T, AsyncStateError<T>>(this, _$identity);
_$$AsyncStateErrorCopyWith<T, _$AsyncStateError<T>> get copyWith =>
__$$AsyncStateErrorCopyWithImpl<T, _$AsyncStateError<T>>(
this, _$identity);
@override
@optionalTypeArgs
@ -654,8 +655,8 @@ class _$AsyncStateError<T>
abstract class AsyncStateError<T> implements AsyncState<T> {
const factory AsyncStateError(final String errorTerm) = _$AsyncStateError<T>;
String get errorTerm => throw _privateConstructorUsedError;
String get errorTerm;
@JsonKey(ignore: true)
$AsyncStateErrorCopyWith<T, AsyncStateError<T>> get copyWith =>
_$$AsyncStateErrorCopyWith<T, _$AsyncStateError<T>> get copyWith =>
throw _privateConstructorUsedError;
}

View File

@ -6,7 +6,7 @@ part of 'async_store.dart';
// StoreGenerator
// **************************************************************************
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic, no_leading_underscores_for_local_identifiers
mixin _$AsyncStore<T> on _AsyncStore<T>, Store {
Computed<bool>? _$isLoadingComputed;

View File

@ -18,12 +18,12 @@ class AsyncStoreListener<T> extends SingleChildStatelessWidget {
)? onSuccess;
const AsyncStoreListener({
Key? key,
super.key,
required this.asyncStore,
this.successMessageBuilder,
this.onSuccess,
Widget? child,
}) : super(key: key, child: child);
super.child,
});
@override
Widget buildWithChild(BuildContext context, Widget? child) {

View File

@ -59,7 +59,6 @@ void goToMedia(BuildContext context, String url) => Navigator.push(
context,
PageRouteBuilder(
pageBuilder: (_, __, ___) => MediaViewPage(url),
transitionDuration: const Duration(milliseconds: 300),
opaque: false,
transitionsBuilder: (_, animation, __, child) =>
FadeTransition(opacity: animation, child: child),

View File

@ -8,34 +8,24 @@ import 'observer_consumers.dart';
/// Important: this will not make [context.watch] react to changes
class MobxProvider<T extends Store> extends Provider<T> {
MobxProvider({
Key? key,
required Create<T> create,
bool? lazy,
TransitionBuilder? builder,
Widget? child,
super.key,
required super.create,
super.lazy,
super.builder,
super.child,
}) : super(
key: key,
create: create,
dispose: (context, store) {
if (store is DisposableStore) store.dispose();
},
lazy: lazy,
builder: builder,
child: child,
);
/// will not dispose the store
MobxProvider.value({
Key? key,
required T value,
TransitionBuilder? builder,
Widget? child,
}) : super.value(
key: key,
builder: builder,
value: value,
child: child,
);
super.key,
required super.value,
super.builder,
super.child,
}) : super.value();
}
/// tracks reactions and disposes them in [DisposableStore.dispose]

View File

@ -14,10 +14,10 @@ class ObserverBuilder<T extends Store> extends StatelessWidget {
final MobxBuilder<T> builder;
const ObserverBuilder({
Key? key,
super.key,
this.store,
required this.builder,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {
@ -38,11 +38,11 @@ class ObserverListener<T extends Store> extends HookWidget {
final Widget child;
const ObserverListener({
Key? key,
super.key,
this.store,
required this.listener,
required this.child,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {
@ -64,11 +64,11 @@ class ObserverConsumer<T extends Store> extends HookWidget {
final MobxBuilder<T> builder;
const ObserverConsumer({
Key? key,
super.key,
this.store,
required this.listener,
required this.builder,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@ -96,7 +96,7 @@ class AboutTile extends HookWidget {
class ChangelogPage extends StatelessWidget {
final String changelog;
const ChangelogPage(this.changelog, {Key? key}) : super(key: key);
const ChangelogPage(this.changelog, {super.key});
@override
Widget build(BuildContext context) {

View File

@ -10,14 +10,14 @@ import 'cached_network_image.dart';
/// Can be disabled with `noBlank`
class Avatar extends HookWidget {
const Avatar({
Key? key,
super.key,
required this.url,
this.radius = 25,
this.noBlank = false,
this.alwaysShow = false,
this.padding = EdgeInsets.zero,
this.onTap,
}) : super(key: key);
});
final String? url;
final double radius;

View File

@ -41,8 +41,8 @@ class CachedNetworkImage extends StatelessWidget {
this.width,
this.fit,
this.cache = true,
Key? key,
}) : super(key: key);
super.key,
});
@override
Widget build(BuildContext context) {

View File

@ -35,8 +35,8 @@ class CommentWidget extends StatelessWidget {
this.canBeMarkedAsRead = false,
this.hideOnRead = false,
this.userMentionId,
Key? key,
}) : super(key: key);
super.key,
});
CommentWidget.fromCommentView(
CommentView cv, {

View File

@ -13,7 +13,7 @@ import 'comment_more_menu_button.dart';
import 'comment_store.dart';
class CommentActions extends HookWidget {
const CommentActions({Key? key}) : super(key: key);
const CommentActions({super.key});
@override
Widget build(BuildContext context) {

View File

@ -18,7 +18,7 @@ import 'comment.dart';
import 'comment_store.dart';
class CommentMoreMenuButton extends HookWidget {
const CommentMoreMenuButton({Key? key}) : super(key: key);
const CommentMoreMenuButton({super.key});
@override
Widget build(BuildContext context) {
@ -44,9 +44,8 @@ class _CommentMoreMenuPopup extends HookWidget {
final CommentStore store;
const _CommentMoreMenuPopup({
Key? key,
required this.store,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@ -54,6 +54,7 @@ abstract class _CommentStore with Store {
_CommentStore(
this._accountsStore, {
required CommentTree commentTree,
// ignore: unused_element
this.userMentionId,
required this.depth,
required this.canBeMarkedAsRead,

View File

@ -6,7 +6,7 @@ part of 'comment_store.dart';
// StoreGenerator
// **************************************************************************
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic, no_leading_underscores_for_local_identifiers
mixin _$CommentStore on _CommentStore, Store {
Computed<bool>? _$isMineComputed;

View File

@ -20,7 +20,7 @@ class Editor extends HookWidget {
final String instanceHost;
const Editor({
Key? key,
super.key,
this.controller,
this.focusNode,
this.onSubmitted,
@ -32,7 +32,7 @@ class Editor extends HookWidget {
this.fancy = false,
required this.instanceHost,
this.autofocus = false,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@ -9,10 +9,10 @@ class FullscreenableImage extends StatelessWidget {
final Widget child;
const FullscreenableImage({
Key? key,
super.key,
required this.url,
required this.child,
}) : super(key: key);
});
@override
Widget build(BuildContext context) => InkWell(

View File

@ -6,7 +6,7 @@ part of 'post_store.dart';
// StoreGenerator
// **************************************************************************
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic
// ignore_for_file: non_constant_identifier_names, unnecessary_brace_in_string_interps, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic, no_leading_underscores_for_local_identifiers
mixin _$PostStore on _PostStore, Store {
Computed<String?>? _$urlDomainComputed;

View File

@ -6,10 +6,10 @@ class PullToRefresh extends StatelessWidget {
final Widget child;
const PullToRefresh({
Key? key,
super.key,
required this.onRefresh,
required this.child,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@ -20,7 +20,7 @@ class RadioPicker<T> extends StatelessWidget {
final Widget? trailing;
const RadioPicker({
Key? key,
super.key,
required this.values,
required this.groupValue,
required this.onChanged,
@ -28,7 +28,7 @@ class RadioPicker<T> extends StatelessWidget {
this.buttonBuilder,
this.title,
this.trailing,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@ -70,8 +70,8 @@ class SortableInfiniteList<T> extends HookWidget {
class InfinitePostList extends SortableInfiniteList<PostView> {
InfinitePostList({
required FetcherWithSorting<PostView> fetcher,
InfiniteScrollController? controller,
required super.fetcher,
super.controller,
}) : super(
itemBuilder: (post) => Column(
children: [
@ -79,8 +79,6 @@ class InfinitePostList extends SortableInfiniteList<PostView> {
const SizedBox(height: 20),
],
),
fetcher: fetcher,
controller: controller,
noItems: const Text('there are no posts'),
uniqueProp: (item) => item.post.apId,
);
@ -88,15 +86,13 @@ class InfinitePostList extends SortableInfiniteList<PostView> {
class InfiniteCommentList extends SortableInfiniteList<CommentView> {
InfiniteCommentList({
required FetcherWithSorting<CommentView> fetcher,
InfiniteScrollController? controller,
required super.fetcher,
super.controller,
}) : super(
itemBuilder: (comment) => CommentWidget(
CommentTree(comment),
detached: true,
),
fetcher: fetcher,
controller: controller,
noItems: const Text('there are no comments'),
uniqueProp: (item) => item.comment.apId,
);

View File

@ -14,14 +14,14 @@ class TileAction extends StatelessWidget {
final Color? iconColor;
const TileAction({
Key? key,
super.key,
this.delayedLoading,
this.iconColor,
required this.icon,
required this.onPressed,
required this.tooltip,
this.loading = false,
}) : super(key: key);
});
@override
Widget build(BuildContext context) => IconButton(

View File

@ -12,8 +12,8 @@ class PersonTile extends StatelessWidget {
const PersonTile(
this.person, {
this.expanded = false,
Key? key,
}) : super(key: key);
super.key,
});
@override
Widget build(BuildContext context) {

View File

@ -6,6 +6,9 @@ list(APPEND FLUTTER_PLUGIN_LIST
url_launcher_linux
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST
)
set(PLUGIN_BUNDLED_LIBRARIES)
foreach(plugin ${FLUTTER_PLUGIN_LIST})
@ -14,3 +17,8 @@ foreach(plugin ${FLUTTER_PLUGIN_LIST})
list(APPEND PLUGIN_BUNDLED_LIBRARIES $<TARGET_FILE:${plugin}_plugin>)
list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
endforeach(plugin)
foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin})
list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
endforeach(ffi_plugin)

View File

@ -7,14 +7,14 @@ packages:
name: _fe_analyzer_shared
url: "https://pub.dartlang.org"
source: hosted
version: "34.0.0"
version: "41.0.0"
analyzer:
dependency: transitive
description:
name: analyzer
url: "https://pub.dartlang.org"
source: hosted
version: "3.2.0"
version: "4.2.0"
archive:
dependency: transitive
description:
@ -28,7 +28,7 @@ packages:
name: args
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.0"
version: "2.3.1"
async:
dependency: transitive
description:
@ -56,7 +56,7 @@ packages:
name: build_config
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
version: "1.1.0"
build_daemon:
dependency: transitive
description:
@ -70,14 +70,14 @@ packages:
name: build_resolvers
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.6"
version: "2.0.9"
build_runner:
dependency: "direct dev"
description:
name: build_runner
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.10"
version: "2.2.0"
build_runner_core:
dependency: transitive
description:
@ -98,7 +98,7 @@ packages:
name: built_value
url: "https://pub.dartlang.org"
source: hosted
version: "8.2.3"
version: "8.4.0"
characters:
dependency: transitive
description:
@ -120,13 +120,6 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
cli_util:
dependency: transitive
description:
name: cli_util
url: "https://pub.dartlang.org"
source: hosted
version: "0.3.5"
clock:
dependency: transitive
description:
@ -147,21 +140,21 @@ packages:
name: collection
url: "https://pub.dartlang.org"
source: hosted
version: "1.15.0"
version: "1.16.0"
convert:
dependency: transitive
description:
name: convert
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
version: "3.0.2"
cross_file:
dependency: transitive
description:
name: cross_file
url: "https://pub.dartlang.org"
source: hosted
version: "0.3.2"
version: "0.3.3+1"
crypto:
dependency: transitive
description:
@ -175,35 +168,35 @@ packages:
name: dart_style
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.1"
version: "2.2.3"
extended_image:
dependency: "direct main"
description:
name: extended_image
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.3"
version: "6.2.1"
extended_image_library:
dependency: transitive
description:
name: extended_image_library
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.4"
version: "3.3.0"
fake_async:
dependency: transitive
description:
name: fake_async
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
version: "1.3.0"
ffi:
dependency: transitive
description:
name: ffi
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.2"
version: "1.2.1"
file:
dependency: transitive
description:
@ -217,14 +210,14 @@ packages:
name: file_picker
url: "https://pub.dartlang.org"
source: hosted
version: "4.3.1"
version: "4.6.1"
fixnum:
dependency: transitive
description:
name: fixnum
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
version: "1.0.1"
flutter:
dependency: "direct main"
description: flutter
@ -236,14 +229,14 @@ packages:
name: flutter_hooks
url: "https://pub.dartlang.org"
source: hosted
version: "0.18.3"
version: "0.18.5+1"
flutter_keyboard_visibility:
dependency: transitive
description:
name: flutter_keyboard_visibility
url: "https://pub.dartlang.org"
source: hosted
version: "5.2.0"
version: "5.3.0"
flutter_keyboard_visibility_platform_interface:
dependency: transitive
description:
@ -264,7 +257,7 @@ packages:
name: flutter_launcher_icons
url: "https://pub.dartlang.org"
source: hosted
version: "0.9.2"
version: "0.9.3"
flutter_localizations:
dependency: "direct main"
description: flutter
@ -276,21 +269,21 @@ packages:
name: flutter_markdown
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.10"
version: "0.6.10+2"
flutter_mobx:
dependency: "direct main"
description:
name: flutter_mobx
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5"
version: "2.0.6+1"
flutter_plugin_android_lifecycle:
dependency: transitive
description:
name: flutter_plugin_android_lifecycle
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5"
version: "2.0.7"
flutter_speed_dial:
dependency: "direct main"
description:
@ -309,7 +302,7 @@ packages:
name: flutter_typeahead
url: "https://pub.dartlang.org"
source: hosted
version: "3.2.5"
version: "4.0.0"
flutter_web_plugins:
dependency: transitive
description: flutter
@ -321,21 +314,21 @@ packages:
name: freezed
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
version: "2.1.0+1"
freezed_annotation:
dependency: "direct main"
description:
name: freezed_annotation
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
version: "2.1.0"
frontend_server_client:
dependency: transitive
description:
name: frontend_server_client
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.2"
version: "2.1.3"
fuzzy:
dependency: "direct main"
description:
@ -349,7 +342,7 @@ packages:
name: glob
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
version: "2.1.0"
graphs:
dependency: transitive
description:
@ -377,56 +370,56 @@ packages:
name: http_multi_server
url: "https://pub.dartlang.org"
source: hosted
version: "3.2.0"
version: "3.2.1"
http_parser:
dependency: transitive
description:
name: http_parser
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.0"
version: "4.0.1"
image:
dependency: transitive
description:
name: image
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.3"
version: "3.2.0"
image_picker:
dependency: "direct main"
description:
name: image_picker
url: "https://pub.dartlang.org"
source: hosted
version: "0.8.5"
version: "0.8.5+3"
image_picker_android:
dependency: transitive
description:
name: image_picker_android
url: "https://pub.dartlang.org"
source: hosted
version: "0.8.4+11"
version: "0.8.5+1"
image_picker_for_web:
dependency: transitive
description:
name: image_picker_for_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.6"
version: "2.1.8"
image_picker_ios:
dependency: transitive
description:
name: image_picker_ios
url: "https://pub.dartlang.org"
source: hosted
version: "0.8.5"
version: "0.8.5+6"
image_picker_platform_interface:
dependency: transitive
description:
name: image_picker_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.4.4"
version: "2.5.0"
intl:
dependency: "direct main"
description:
@ -447,28 +440,28 @@ packages:
name: js
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.3"
version: "0.6.4"
json_annotation:
dependency: "direct main"
description:
name: json_annotation
url: "https://pub.dartlang.org"
source: hosted
version: "4.5.0"
version: "4.6.0"
json_serializable:
dependency: "direct dev"
description:
name: json_serializable
url: "https://pub.dartlang.org"
source: hosted
version: "6.2.0"
version: "6.3.1"
keyboard_dismisser:
dependency: "direct main"
description:
name: keyboard_dismisser
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
version: "3.0.0"
latinize:
dependency: transitive
description:
@ -482,7 +475,7 @@ packages:
name: lemmy_api_client
url: "https://pub.dartlang.org"
source: hosted
version: "0.20.0"
version: "0.21.0"
logging:
dependency: "direct main"
description:
@ -510,7 +503,7 @@ packages:
name: material_color_utilities
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.3"
version: "0.1.4"
matrix4_transform:
dependency: "direct main"
description:
@ -531,28 +524,28 @@ packages:
name: mime
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
version: "1.0.2"
mobx:
dependency: "direct main"
description:
name: mobx
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.7"
version: "2.0.7+4"
mobx_codegen:
dependency: "direct dev"
description:
name: mobx_codegen
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.6"
version: "2.0.7"
modal_bottom_sheet:
dependency: "direct main"
description:
name: modal_bottom_sheet
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
version: "2.1.0"
nested:
dependency: "direct main"
description:
@ -566,7 +559,7 @@ packages:
name: package_config
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
version: "2.1.0"
package_info_plus:
dependency: "direct main"
description:
@ -615,70 +608,70 @@ packages:
name: path
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.0"
version: "1.8.1"
path_provider:
dependency: transitive
description:
name: path_provider
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.9"
version: "2.0.11"
path_provider_android:
dependency: transitive
description:
name: path_provider_android
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.13"
version: "2.0.16"
path_provider_ios:
dependency: transitive
description:
name: path_provider_ios
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.8"
version: "2.0.10"
path_provider_linux:
dependency: transitive
description:
name: path_provider_linux
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.5"
version: "2.1.7"
path_provider_macos:
dependency: transitive
description:
name: path_provider_macos
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5"
version: "2.0.6"
path_provider_platform_interface:
dependency: transitive
description:
name: path_provider_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.3"
version: "2.0.4"
path_provider_windows:
dependency: transitive
description:
name: path_provider_windows
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5"
version: "2.0.7"
petitparser:
dependency: transitive
description:
name: petitparser
url: "https://pub.dartlang.org"
source: hosted
version: "4.4.0"
version: "5.0.0"
photo_view:
dependency: "direct main"
description:
name: photo_view
url: "https://pub.dartlang.org"
source: hosted
version: "0.13.0"
version: "0.14.0"
platform:
dependency: transitive
description:
@ -699,7 +692,7 @@ packages:
name: pool
url: "https://pub.dartlang.org"
source: hosted
version: "1.5.0"
version: "1.5.1"
process:
dependency: transitive
description:
@ -713,7 +706,7 @@ packages:
name: provider
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.2"
version: "6.0.3"
pub_semver:
dependency: transitive
description:
@ -734,7 +727,7 @@ packages:
name: share_plus
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.4"
version: "4.0.10"
share_plus_linux:
dependency: transitive
description:
@ -748,63 +741,63 @@ packages:
name: share_plus_macos
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
version: "3.0.1"
share_plus_platform_interface:
dependency: transitive
description:
name: share_plus_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.2"
version: "3.0.3"
share_plus_web:
dependency: transitive
description:
name: share_plus_web
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
version: "3.0.1"
share_plus_windows:
dependency: transitive
description:
name: share_plus_windows
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
version: "3.0.1"
shared_preferences:
dependency: "direct main"
description:
name: shared_preferences
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.13"
version: "2.0.15"
shared_preferences_android:
dependency: transitive
description:
name: shared_preferences_android
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.11"
version: "2.0.12"
shared_preferences_ios:
dependency: transitive
description:
name: shared_preferences_ios
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
version: "2.1.1"
shared_preferences_linux:
dependency: transitive
description:
name: shared_preferences_linux
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
version: "2.1.1"
shared_preferences_macos:
dependency: transitive
description:
name: shared_preferences_macos
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.3"
version: "2.0.4"
shared_preferences_platform_interface:
dependency: transitive
description:
@ -818,28 +811,28 @@ packages:
name: shared_preferences_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.3"
version: "2.0.4"
shared_preferences_windows:
dependency: transitive
description:
name: shared_preferences_windows
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
version: "2.1.1"
shelf:
dependency: transitive
description:
name: shelf
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0"
version: "1.3.1"
shelf_web_socket:
dependency: transitive
description:
name: shelf_web_socket
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
version: "1.0.2"
sky_engine:
dependency: transitive
description: flutter
@ -865,7 +858,7 @@ packages:
name: source_span
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.1"
version: "1.8.2"
stack_trace:
dependency: transitive
description:
@ -907,7 +900,7 @@ packages:
name: test_api
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.8"
version: "0.4.9"
timeago:
dependency: "direct main"
description:
@ -928,70 +921,70 @@ packages:
name: typed_data
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0"
version: "1.3.1"
url_launcher:
dependency: "direct main"
description:
name: url_launcher
url: "https://pub.dartlang.org"
source: hosted
version: "6.1.0"
version: "6.1.5"
url_launcher_android:
dependency: transitive
description:
name: url_launcher_android
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.16"
version: "6.0.17"
url_launcher_ios:
dependency: transitive
description:
name: url_launcher_ios
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.15"
version: "6.0.17"
url_launcher_linux:
dependency: transitive
description:
name: url_launcher_linux
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
version: "3.0.1"
url_launcher_macos:
dependency: transitive
description:
name: url_launcher_macos
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
version: "3.0.1"
url_launcher_platform_interface:
dependency: transitive
description:
name: url_launcher_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5"
version: "2.1.0"
url_launcher_web:
dependency: transitive
description:
name: url_launcher_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.9"
version: "2.0.12"
url_launcher_windows:
dependency: transitive
description:
name: url_launcher_windows
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
version: "3.0.1"
vector_math:
dependency: transitive
description:
name: vector_math
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
version: "2.1.2"
watcher:
dependency: transitive
description:
@ -1019,7 +1012,7 @@ packages:
name: win32
url: "https://pub.dartlang.org"
source: hosted
version: "2.5.2"
version: "2.6.1"
xdg_directories:
dependency: transitive
description:
@ -1033,14 +1026,14 @@ packages:
name: xml
url: "https://pub.dartlang.org"
source: hosted
version: "5.3.1"
version: "6.1.0"
yaml:
dependency: transitive
description:
name: yaml
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.0"
version: "3.1.1"
sdks:
dart: ">=2.16.0 <3.0.0"
flutter: ">=2.10.0"
dart: ">=2.17.0 <3.0.0"
flutter: ">=3.0.0"

View File

@ -18,16 +18,16 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
version: 0.8.0+19
environment:
sdk: ">=2.16.0 <3.0.0"
flutter: ">=2.10.0 <3.0.0"
sdk: ">=2.17.0 <3.0.0"
flutter: ">=3.0.0 <4.0.0"
dependencies:
# widgets
flutter_speed_dial: ^6.0.0
photo_view: ^0.13.0
photo_view: ^0.14.0
markdown: ^5.0.0
flutter_markdown: ^0.6.1
flutter_typeahead: ^3.2.1
flutter_typeahead: ^4.0.0
modal_bottom_sheet: ^2.0.0
# native
@ -47,11 +47,11 @@ dependencies:
# utils
timeago: ^3.0.2
fuzzy: ^0.4.0-nullsafety.0
lemmy_api_client: ^0.20.0
lemmy_api_client: ^0.21.0
intl: ^0.17.0
matrix4_transform: ^2.0.0
json_annotation: ^4.5.0
keyboard_dismisser: ^2.0.0
keyboard_dismisser: ^3.0.0
freezed_annotation: ^2.0.1
logging: ^1.0.1
nested: ^1.0.0

View File

@ -6,6 +6,9 @@ list(APPEND FLUTTER_PLUGIN_LIST
url_launcher_windows
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST
)
set(PLUGIN_BUNDLED_LIBRARIES)
foreach(plugin ${FLUTTER_PLUGIN_LIST})
@ -14,3 +17,8 @@ foreach(plugin ${FLUTTER_PLUGIN_LIST})
list(APPEND PLUGIN_BUNDLED_LIBRARIES $<TARGET_FILE:${plugin}_plugin>)
list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
endforeach(plugin)
foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin})
list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
endforeach(ffi_plugin)