chore: upgrade to flutter 3.19.0 (#4677)

* chore: upgrade to flutter 3.19.0

* chore: adjust to the latest flutter convention

* chore: update CI flutter version

* fix: flutter analyze

* fix: flutter analyze

* fix: flutter analyze

* chore: fix docker build
This commit is contained in:
Lucas.Xu 2024-02-19 12:49:55 +07:00 committed by GitHub
parent b2e55c4e2e
commit 252699d249
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
83 changed files with 286 additions and 407 deletions

View File

@ -23,7 +23,7 @@ on:
env:
CARGO_TERM_COLOR: always
FLUTTER_VERSION: "3.18.0-0.2.pre"
FLUTTER_VERSION: "3.19.0"
RUST_TOOLCHAIN: "1.75"
CARGO_MAKE_VERSION: "0.36.6"
@ -76,7 +76,7 @@ jobs:
id: flutter
uses: subosito/flutter-action@v2
with:
channel: "beta"
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
- uses: Swatinem/rust-cache@v2
@ -157,7 +157,7 @@ jobs:
id: flutter
uses: subosito/flutter-action@v2
with:
channel: "beta"
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
- uses: Swatinem/rust-cache@v2
@ -260,7 +260,7 @@ jobs:
id: flutter
uses: subosito/flutter-action@v2
with:
channel: "beta"
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
- uses: taiki-e/install-action@v2
@ -334,7 +334,7 @@ jobs:
id: flutter
uses: subosito/flutter-action@v2
with:
channel: "beta"
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
- uses: taiki-e/install-action@v2
@ -425,7 +425,7 @@ jobs:
id: flutter
uses: subosito/flutter-action@v2
with:
channel: "beta"
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
- uses: taiki-e/install-action@v2

View File

@ -18,7 +18,7 @@ on:
- "!frontend/appflowy_tauri/**"
env:
FLUTTER_VERSION: "3.18.0-0.2.pre"
FLUTTER_VERSION: "3.19.0"
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
@ -57,7 +57,7 @@ jobs:
id: flutter
uses: subosito/flutter-action@v2
with:
channel: "beta"
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
cache: true

View File

@ -6,7 +6,7 @@ on:
- "*"
env:
FLUTTER_VERSION: "3.18.0-0.2.pre"
FLUTTER_VERSION: "3.19.0"
RUST_TOOLCHAIN: "1.75"
jobs:
@ -57,7 +57,7 @@ jobs:
- name: Install flutter
uses: subosito/flutter-action@v2
with:
channel: "beta"
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
- name: Install Rust toolchain
@ -143,7 +143,7 @@ jobs:
- name: Install flutter
uses: subosito/flutter-action@v2
with:
channel: "beta"
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
- name: Install Rust toolchain
@ -243,7 +243,7 @@ jobs:
- name: Install flutter
uses: subosito/flutter-action@v2
with:
channel: "beta"
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
- name: Install Rust toolchain
@ -348,7 +348,7 @@ jobs:
- name: Install flutter
uses: subosito/flutter-action@v2
with:
channel: "beta"
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
- name: Install Rust toolchain

View File

@ -10,7 +10,7 @@ on:
env:
CARGO_TERM_COLOR: always
FLUTTER_VERSION: "3.18.0-0.2.pre"
FLUTTER_VERSION: "3.19.0"
RUST_TOOLCHAIN: "1.75"
jobs:
@ -33,7 +33,7 @@ jobs:
id: flutter
uses: subosito/flutter-action@v2
with:
channel: "beta"
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
cache: true

View File

@ -21,6 +21,6 @@
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>11.0</string>
<string>12.0</string>
</dict>
</plist>

View File

@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '11.0'
# platform :ios, '12.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

View File

@ -169,8 +169,8 @@ SPEC CHECKSUMS:
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
file_picker: 15fd9539e4eb735dc54bae8c0534a7a9511a03de
flowy_infra_ui: 0455e1fa8c51885aa1437848e361e99419f34ebc
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
fluttertoast: fafc4fa4d01a6a9e4f772ecd190ffa525e9e2d9c
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
fluttertoast: 31b00dabfa7fb7bacd9e7dbee580d7a2ff4bf265
image_gallery_saver: cb43cc43141711190510e92c460eb1655cd343cb
image_picker_ios: 99dfe1854b4fa34d0364e74a78448a0151025425
integration_test: 13825b8a9334a850581300559b8839134b124670
@ -189,6 +189,6 @@ SPEC CHECKSUMS:
Toast: 91b396c56ee72a5790816f40d3a94dd357abc196
url_launcher_ios: bbd758c6e7f9fd7b5b1d4cde34d2b95fcce5e812
PODFILE CHECKSUM: 8c681999c7764593c94846b2a64b44d86f7a27ac
PODFILE CHECKSUM: d94f9be27d1db182e9bc77d10f065555d518f127
COCOAPODS: 1.12.1
COCOAPODS: 1.15.2

View File

@ -143,7 +143,7 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1430;
LastUpgradeCheck = 1510;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
@ -330,7 +330,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@ -419,7 +419,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@ -468,7 +468,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1430"
LastUpgradeVersion = "1510"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View File

@ -1,19 +0,0 @@
import 'package:flutter/services.dart';
extension RawKeyboardExtension on RawKeyboard {
bool get isAltPressed => keysPressed.any(
(key) => [
LogicalKeyboardKey.alt,
LogicalKeyboardKey.altLeft,
LogicalKeyboardKey.altRight,
].contains(key),
);
bool get isControlPressed => keysPressed.any(
(key) => [
LogicalKeyboardKey.control,
LogicalKeyboardKey.controlLeft,
LogicalKeyboardKey.controlRight,
].contains(key),
);
}

View File

@ -113,7 +113,7 @@ class _QuickEditFieldState extends State<QuickEditField> {
controller.text = fieldOptionValues.name;
});
} else {
if (mounted) {
if (context.mounted) {
context.pop();
}
}

View File

@ -48,7 +48,7 @@ class _LanguageSettingGroupState extends State<LanguageSettingGroup> {
final newLocale =
await context.push<Locale>(LanguagePickerScreen.routeName);
if (newLocale != null && newLocale != locale) {
if (mounted) {
if (context.mounted) {
context
.read<AppearanceSettingsCubit>()
.setLocale(context, newLocale);

View File

@ -138,11 +138,10 @@ class _BoardColumnHeaderState extends State<BoardColumnHeader> {
Widget _buildTextField(BuildContext context) {
return Expanded(
child: RawKeyboardListener(
child: KeyboardListener(
focusNode: FocusNode(),
onKey: (event) {
if (event is RawKeyDownEvent &&
[LogicalKeyboardKey.enter, LogicalKeyboardKey.escape]
onKeyEvent: (event) {
if ([LogicalKeyboardKey.enter, LogicalKeyboardKey.escape]
.contains(event.logicalKey)) {
_saveEdit();
}

View File

@ -34,9 +34,8 @@ class _GridChecklistCellState extends State<ChecklistCellEditor> {
void initState() {
super.initState();
newTaskFocusNode = FocusNode(
onKey: (node, event) {
if (event is RawKeyDownEvent &&
event.logicalKey == LogicalKeyboardKey.escape) {
onKeyEvent: (node, event) {
if (event.logicalKey == LogicalKeyboardKey.escape) {
node.unfocus();
return KeyEventResult.handled;
}
@ -170,9 +169,8 @@ class _ChecklistItemState extends State<ChecklistItem> {
super.initState();
_textController = TextEditingController(text: widget.task.data.name);
_focusNode = FocusNode(
onKey: (node, event) {
if (event is RawKeyDownEvent &&
event.logicalKey == LogicalKeyboardKey.escape) {
onKeyEvent: (node, event) {
if (event.logicalKey == LogicalKeyboardKey.escape) {
node.unfocus();
return KeyEventResult.handled;
}

View File

@ -1,6 +1,5 @@
import 'dart:io';
import 'package:appflowy/core/raw_keyboard_extension.dart';
import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/document/presentation/editor_plugins/actions/block_action_button.dart';
@ -46,7 +45,7 @@ class BlockAddButton extends StatelessWidget {
],
),
onTap: () {
final isAltPressed = RawKeyboard.instance.isAltPressed;
final isAltPressed = HardwareKeyboard.instance.isAltPressed;
final transaction = editorState.transaction;

View File

@ -79,7 +79,10 @@ Future<bool> inlinePageReferenceCommandHandler(
}
}
// ignore: use_build_context_synchronously
if (!context.mounted) {
return false;
}
final service = InlineActionsService(
context: context,
handlers: [

View File

@ -199,7 +199,7 @@ class ImagePlaceholderState extends State<ImagePlaceholder> {
imageType = CustomImageType.internal;
}
if (path == null && context.mounted) {
if (mounted && path == null) {
showSnackBarMessage(
context,
LocaleKeys.document_imageBlock_error_invalidImage.tr(),

View File

@ -196,12 +196,11 @@ class MathEquationBlockComponentWidgetState
title: Text(
LocaleKeys.document_plugins_mathEquation_editMathEquation.tr(),
),
content: RawKeyboardListener(
content: KeyboardListener(
focusNode: FocusNode(),
onKey: (key) {
if (key is! RawKeyDownEvent) return;
onKeyEvent: (key) {
if (key.logicalKey == LogicalKeyboardKey.enter &&
!key.isShiftPressed) {
!HardwareKeyboard.instance.isShiftPressed) {
updateMathEquation(controller.text, context);
} else if (key.logicalKey == LogicalKeyboardKey.escape) {
dismiss(context);

View File

@ -1,6 +1,3 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/inline_actions/inline_actions_menu.dart';
import 'package:appflowy/plugins/inline_actions/inline_actions_result.dart';
@ -10,6 +7,8 @@ import 'package:appflowy_editor/appflowy_editor.dart';
import 'package:collection/collection.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
/// All heights are in physical pixels
const double _groupTextHeight = 14; // 12 height + 2 bottom spacing
@ -145,7 +144,7 @@ class _InlineActionsHandlerState extends State<InlineActionsHandler> {
Widget build(BuildContext context) {
return Focus(
focusNode: _focusNode,
onKey: onKey,
onKeyEvent: onKeyEvent,
child: Container(
constraints: BoxConstraints.loose(const Size(200, _menuHeight)),
decoration: BoxDecoration(
@ -208,11 +207,7 @@ class _InlineActionsHandlerState extends State<InlineActionsHandler> {
InlineActionsMenuItem handlerOf(int groupIndex, int handlerIndex) =>
results[groupIndex].results[handlerIndex];
KeyEventResult onKey(focus, event) {
if (event is! RawKeyDownEvent) {
return KeyEventResult.ignored;
}
KeyEventResult onKeyEvent(focus, KeyEvent event) {
const moveKeys = [
LogicalKeyboardKey.arrowUp,
LogicalKeyboardKey.arrowDown,
@ -348,7 +343,7 @@ class _InlineActionsHandlerState extends State<InlineActionsHandler> {
if (key == LogicalKeyboardKey.arrowUp ||
(key == LogicalKeyboardKey.tab &&
RawKeyboard.instance.isShiftPressed)) {
HardwareKeyboard.instance.isShiftPressed)) {
if (_selectedIndex == 0 && _selectedGroup > 0) {
_selectedGroup -= 1;
_selectedIndex = lengthOfGroup(_selectedGroup) - 1;

View File

@ -34,7 +34,7 @@ class MemoryLeakDetectorTask extends LaunchTask {
),
);
MemoryAllocations.instance.addListener((p0) {
FlutterMemoryAllocations.instance.addListener((p0) {
LeakTracking.dispatchObjectEvent(p0.toMap());
});

View File

@ -1,4 +1,3 @@
import 'package:appflowy/core/raw_keyboard_extension.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/workspace/application/sidebar/folder/folder_bloc.dart';
import 'package:appflowy/workspace/application/tabs/tabs_bloc.dart';
@ -54,7 +53,7 @@ class FavoriteFolder extends StatelessWidget {
view: view,
level: 0,
onSelected: (view) {
if (RawKeyboard.instance.isControlPressed) {
if (HardwareKeyboard.instance.isControlPressed) {
context.read<TabsBloc>().openTab(view);
}

View File

@ -1,4 +1,3 @@
import 'package:appflowy/core/raw_keyboard_extension.dart';
import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/workspace/application/menu/menu_bloc.dart';
@ -53,7 +52,7 @@ class PersonalFolder extends StatelessWidget {
leftPadding: 16,
isFeedback: false,
onSelected: (view) {
if (RawKeyboard.instance.isControlPressed) {
if (HardwareKeyboard.instance.isControlPressed) {
context.read<TabsBloc>().openTab(view);
}

View File

@ -139,7 +139,7 @@ class _ImportAppFlowyDataButtonState extends State<ImportAppFlowyDataButton> {
onTap: () async {
final path =
await getIt<FilePickerService>().getDirectoryPath();
if (path == null || !mounted) {
if (path == null || !context.mounted) {
return;
}

View File

@ -145,12 +145,11 @@ class ShortcutsListTile extends StatelessWidget {
final formKey = GlobalKey<FormState>();
return AlertDialog(
title: Text(LocaleKeys.settings_shortcuts_updateShortcutStep.tr()),
content: RawKeyboardListener(
content: KeyboardListener(
focusNode: FocusNode(),
onKey: (key) {
if (key is! RawKeyDownEvent) return;
onKeyEvent: (key) {
if (key.logicalKey == LogicalKeyboardKey.enter &&
!key.isShiftPressed) {
!HardwareKeyboard.instance.isShiftPressed) {
if (controller.text == shortcutEvent.command) {
_dismiss(builderContext);
}
@ -161,7 +160,7 @@ class ShortcutsListTile extends StatelessWidget {
} else if (key.logicalKey == LogicalKeyboardKey.escape) {
_dismiss(builderContext);
} else {
//extract the keybinding command from the rawkeyevent.
//extract the keybinding command from the key event.
controller.text = key.convertToCommand;
}
},
@ -207,19 +206,19 @@ class ShortcutsListTile extends StatelessWidget {
void _dismiss(BuildContext context) => Navigator.of(context).pop();
}
extension on RawKeyEvent {
extension on KeyEvent {
String get convertToCommand {
String command = '';
if (isAltPressed) {
if (HardwareKeyboard.instance.isAltPressed) {
command += 'alt+';
}
if (isControlPressed) {
if (HardwareKeyboard.instance.isControlPressed) {
command += 'ctrl+';
}
if (isShiftPressed) {
if (HardwareKeyboard.instance.isShiftPressed) {
command += 'shift+';
}
if (isMetaPressed) {
if (HardwareKeyboard.instance.isMetaPressed) {
command += 'meta+';
}

View File

@ -202,12 +202,12 @@ class _ChangeStoragePathButtonState extends State<_ChangeStoragePathButton> {
if (path == null || widget.usingPath == path) {
return;
}
if (!mounted) {
if (!context.mounted) {
return;
}
await context.read<SettingsLocationCubit>().setCustomPath(path);
await runAppFlowy(isAnon: true);
if (mounted) {
if (context.mounted) {
Navigator.of(context).pop();
}
},
@ -272,14 +272,14 @@ class _RecoverDefaultStorageButtonState
if (widget.usingPath == path) {
return;
}
if (!mounted) {
if (!context.mounted) {
return;
}
await context
.read<SettingsLocationCubit>()
.resetDataStoragePathToApplicationDefault();
await runAppFlowy(isAnon: true);
if (mounted) {
if (context.mounted) {
Navigator.of(context).pop();
}
},

View File

@ -1,6 +1,3 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:appflowy/workspace/presentation/widgets/date_picker/appflowy_date_picker.dart';
import 'package:appflowy/workspace/presentation/widgets/date_picker/utils/date_time_format_ext.dart';
import 'package:appflowy/workspace/presentation/widgets/date_picker/utils/user_time_format_ext.dart';
@ -9,6 +6,8 @@ import 'package:appflowy_backend/protobuf/flowy-user/date_time.pbenum.dart';
import 'package:appflowy_editor/appflowy_editor.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra_ui/style_widget/decoration.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
/// Provides arguemnts for [AppFlowyDatePicker] when showing
/// a [DatePickerMenu]
@ -118,11 +117,10 @@ class DatePickerMenu extends DatePickerService {
child: SizedBox(
height: editorSize.height,
width: editorSize.width,
child: RawKeyboardListener(
child: KeyboardListener(
focusNode: FocusNode()..requestFocus(),
onKey: (event) {
if (event is RawKeyDownEvent &&
event.logicalKey == LogicalKeyboardKey.escape) {
onKeyEvent: (event) {
if (event.logicalKey == LogicalKeyboardKey.escape) {
dismiss();
}
},

View File

@ -1,86 +0,0 @@
import 'package:appflowy/workspace/application/view/view_listener.dart';
import 'package:appflowy/workspace/application/view/view_service.dart';
import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
import 'package:flutter/material.dart';
// TODO: Remove this file after the migration is done.
class ViewLeftBarItem extends StatefulWidget {
ViewLeftBarItem({
required this.view,
}) : super(key: ValueKey(view.id));
final ViewPB view;
@override
State<ViewLeftBarItem> createState() => _ViewLeftBarItemState();
}
class _ViewLeftBarItemState extends State<ViewLeftBarItem> {
final _controller = TextEditingController();
final _focusNode = FocusNode();
late final ViewListener _viewListener;
late ViewPB view;
@override
void initState() {
super.initState();
view = widget.view;
_focusNode.addListener(_handleFocusChanged);
_viewListener = ViewListener(viewId: widget.view.id);
_viewListener.start(
onViewUpdated: (updatedView) {
if (mounted) {
setState(() {
view = updatedView;
_controller.text = view.name;
});
}
},
);
_controller.text = view.name;
}
@override
void dispose() {
_controller.dispose();
_focusNode.removeListener(_handleFocusChanged);
_focusNode.dispose();
_viewListener.stop();
super.dispose();
}
@override
Widget build(BuildContext context) {
return GestureDetector(
key: ValueKey(_controller.text),
onDoubleTap: () {
_controller.selection = TextSelection(
baseOffset: 0,
extentOffset: _controller.text.length,
);
},
child: TextField(
controller: _controller,
focusNode: _focusNode,
scrollPadding: EdgeInsets.zero,
decoration: const InputDecoration(
contentPadding: EdgeInsets.symmetric(vertical: 4.0),
border: InputBorder.none,
isDense: true,
),
style: Theme.of(context).textTheme.bodyMedium,
),
);
}
void _handleFocusChanged() {
if (_controller.text.isEmpty) {
_controller.text = view.name;
return;
}
if (_controller.text != view.name) {
ViewBackendService.updateView(viewId: view.id, name: _controller.text);
}
}
}

View File

@ -206,7 +206,7 @@
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0920;
LastUpgradeCheck = 1430;
LastUpgradeCheck = 1510;
ORGANIZATIONNAME = "";
TargetAttributes = {
33CC10EC2044A3C60003C045 = {

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1430"
LastUpgradeVersion = "1510"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View File

@ -29,7 +29,7 @@ dev_dependencies:
sdk: flutter
integration_test:
sdk: flutter
flutter_lints: ^2.0.1
flutter_lints: ^3.0.1
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

View File

@ -25,7 +25,7 @@ dev_dependencies:
sdk: flutter
build_runner:
freezed:
flutter_lints: ^2.0.1
flutter_lints: ^3.0.1
json_serializable: ^6.6.2
# For information on the generic Dart part of this file, see the

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
class PopoverMenu extends StatefulWidget {
const PopoverMenu({Key? key}) : super(key: key);
const PopoverMenu({super.key});
@override
State<StatefulWidget> createState() => _PopoverMenuState();
@ -77,11 +77,11 @@ class ExampleButton extends StatelessWidget {
final PopoverDirection? direction;
const ExampleButton({
Key? key,
super.key,
required this.label,
this.direction,
this.offset = Offset.zero,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@ -7,7 +7,7 @@ void main() {
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
const MyApp({super.key});
// This widget is the root of your application.
@override
@ -32,7 +32,7 @@ class MyApp extends StatelessWidget {
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
const MyHomePage({super.key, required this.title});
// This widget is the home page of your application. It is stateful, meaning
// that it has a State object (defined below) that contains fields that affect

View File

@ -45,7 +45,7 @@ dev_dependencies:
# activated in the `analysis_options.yaml` file located at the root of your
# package. See that file for information about deactivating specific lint
# rules and activating additional ones.
flutter_lints: ^2.0.0
flutter_lints: ^3.0.1
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

View File

@ -70,8 +70,7 @@ class PopoverMask extends StatelessWidget {
final void Function() onTap;
final Decoration? decoration;
const PopoverMask({Key? key, required this.onTap, this.decoration})
: super(key: key);
const PopoverMask({super.key, required this.onTap, this.decoration});
@override
Widget build(BuildContext context) {

View File

@ -163,8 +163,7 @@ class PopoverState extends State<Popover> {
return FocusScope(
onKey: (node, event) {
if (event is RawKeyDownEvent &&
event.logicalKey == LogicalKeyboardKey.escape) {
if (event.logicalKey == LogicalKeyboardKey.escape) {
_removeRootOverlay();
return KeyEventResult.handled;
}
@ -265,7 +264,7 @@ class PopoverContainer extends StatefulWidget {
final void Function() onCloseAll;
const PopoverContainer({
Key? key,
super.key,
required this.popupBuilder,
required this.direction,
required this.popoverLink,
@ -273,7 +272,7 @@ class PopoverContainer extends StatefulWidget {
required this.windowPadding,
required this.onClose,
required this.onCloseAll,
}) : super(key: key);
});
@override
State<StatefulWidget> createState() => PopoverContainerState();

View File

@ -14,7 +14,7 @@ dependencies:
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.0
flutter_lints: ^3.0.1
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

View File

@ -13,6 +13,7 @@
///
///
///
library;
// ignore_for_file: constant_identifier_names
import 'package:flutter/widgets.dart';

View File

@ -26,8 +26,8 @@ dev_dependencies:
flutter_test:
sdk: flutter
build_runner: ^2.2.0
flutter_lints: ^2.0.1
freezed: 2.2.0
flutter_lints: ^3.0.1
freezed: ^2.4.7
json_serializable: ^6.5.4
# For information on the generic Dart part of this file, see the

View File

@ -5,7 +5,7 @@ import '../keyboard/keyboard_screen.dart';
import 'demo_item.dart';
class HomeScreen extends StatelessWidget {
const HomeScreen({Key? key}) : super(key: key);
const HomeScreen({super.key});
static List<ListItem> items = [
SectionHeaderItem('Widget Demos'),

View File

@ -19,7 +19,7 @@ class KeyboardItem extends DemoItem {
}
class KeyboardScreen extends StatefulWidget {
const KeyboardScreen({Key? key}) : super(key: key);
const KeyboardScreen({super.key});
@override
State<KeyboardScreen> createState() => _KeyboardScreenState();

View File

@ -9,7 +9,7 @@ void main() {
}
class ExampleApp extends StatelessWidget {
const ExampleApp({Key? key}) : super(key: key);
const ExampleApp({super.key});
@override
Widget build(BuildContext context) {

View File

@ -44,7 +44,7 @@ class OverlayDemoConfiguration extends ChangeNotifier {
}
class OverlayScreen extends StatelessWidget {
const OverlayScreen({Key? key}) : super(key: key);
const OverlayScreen({super.key});
@override
Widget build(BuildContext context) {

View File

@ -4,7 +4,8 @@ description: Demonstrates how to use the flowy_infra_ui plugin.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
environment:
sdk: ">=2.12.0 <3.0.0"
flutter: ">=3.19.0"
sdk: ">=3.1.5 <4.0.0"
dependencies:
flutter:
@ -20,7 +21,7 @@ dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.1
flutter_lints: ^3.0.1
flutter:
uses-material-design: true

View File

@ -16,6 +16,6 @@ dependencies:
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.1
flutter_lints: ^3.0.1
flutter:

View File

@ -18,7 +18,7 @@ dependencies:
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.1
flutter_lints: ^3.0.1
flutter:
plugin:

View File

@ -78,7 +78,7 @@ abstract mixin class FlowyOverlayDelegate {
}
class FlowyOverlay extends StatefulWidget {
const FlowyOverlay({Key? key, required this.child}) : super(key: key);
const FlowyOverlay({super.key, required this.child});
final Widget child;

View File

@ -17,13 +17,13 @@ class ListOverlayFooter {
class ListOverlay extends StatelessWidget {
const ListOverlay({
Key? key,
super.key,
required this.itemBuilder,
this.itemCount = 0,
this.controller,
this.constraints = const BoxConstraints(),
this.footer,
}) : super(key: key);
});
final IndexedWidgetBuilder itemBuilder;
final int itemCount;
@ -117,8 +117,8 @@ class OverlayContainer extends StatelessWidget {
required this.child,
this.constraints,
this.padding = overlayContainerPadding,
Key? key,
}) : super(key: key);
super.key,
});
@override
Widget build(BuildContext context) {

View File

@ -10,11 +10,11 @@ class OptionItem {
class OptionOverlay<T> extends StatelessWidget {
const OptionOverlay({
Key? key,
super.key,
required this.items,
this.onHover,
this.onTap,
}) : super(key: key);
});
final List<T> items;
final IndexedValueCallback<T>? onHover;
@ -69,8 +69,8 @@ class OptionOverlay<T> extends StatelessWidget {
class _OptionListItem<T> extends StatelessWidget {
const _OptionListItem(
this.value, {
Key? key,
}) : super(key: key);
super.key,
});
final T value;

View File

@ -2,9 +2,9 @@ import 'package:flutter/material.dart';
class AutoUnfocus extends StatelessWidget {
const AutoUnfocus({
Key? key,
super.key,
required this.child,
}) : super(key: key);
});
final Widget child;

View File

@ -5,10 +5,10 @@ import 'package:flutter/material.dart';
class KeyboardVisibilityDetector extends StatefulWidget {
const KeyboardVisibilityDetector({
Key? key,
super.key,
required this.child,
this.onKeyboardVisibilityChange,
}) : super(key: key);
});
final Widget child;
final void Function(bool)? onKeyboardVisibilityChange;
@ -57,10 +57,9 @@ class _KeyboardVisibilityDetectorState
class _KeyboardVisibilityDetectorInheritedWidget extends InheritedWidget {
const _KeyboardVisibilityDetectorInheritedWidget({
Key? key,
required this.isKeyboardVisible,
required Widget child,
}) : super(key: key, child: child);
required super.child,
});
final bool isKeyboardVisible;

View File

@ -4,9 +4,9 @@ class FlowyBarTitle extends StatelessWidget {
final String title;
const FlowyBarTitle({
Key? key,
super.key,
required this.title,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@ -31,7 +31,7 @@ class FlowyButton extends StatelessWidget {
final bool expand;
const FlowyButton({
Key? key,
super.key,
required this.text,
this.onTap,
this.onSecondaryTap,
@ -52,7 +52,7 @@ class FlowyButton extends StatelessWidget {
this.showDefaultBoxDecorationOnMobile = false,
this.iconPadding = 6,
this.expand = false,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {
@ -168,7 +168,7 @@ class FlowyTextButton extends StatelessWidget {
// final HoverDisplayConfig? hoverDisplay;
const FlowyTextButton(
this.text, {
Key? key,
super.key,
this.onPressed,
this.fontSize,
this.fontColor,
@ -184,7 +184,7 @@ class FlowyTextButton extends StatelessWidget {
this.constraints = const BoxConstraints(minWidth: 0.0, minHeight: 0.0),
this.decoration,
this.fontFamily,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {
@ -260,7 +260,7 @@ class FlowyRichTextButton extends StatelessWidget {
// final HoverDisplayConfig? hoverDisplay;
const FlowyRichTextButton(
this.text, {
Key? key,
super.key,
this.onPressed,
this.overflow = TextOverflow.ellipsis,
this.padding = const EdgeInsets.symmetric(horizontal: 8, vertical: 6),
@ -272,7 +272,7 @@ class FlowyRichTextButton extends StatelessWidget {
this.tooltip,
this.constraints = const BoxConstraints(minWidth: 58.0, minHeight: 30.0),
this.decoration,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@ -4,9 +4,9 @@ class FlowyCloseButton extends StatelessWidget {
final VoidCallback? onPressed;
const FlowyCloseButton({
Key? key,
super.key,
this.onPressed,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@ -24,7 +24,7 @@ class FlowyColorPicker extends StatelessWidget {
final Border? border;
const FlowyColorPicker({
Key? key,
super.key,
required this.colors,
this.selected,
this.onTap,
@ -32,7 +32,7 @@ class FlowyColorPicker extends StatelessWidget {
this.iconSize = 16,
this.itemHeight = 32,
this.border,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@ -14,7 +14,7 @@ class FlowyContainer extends StatelessWidget {
final BoxBorder? border;
const FlowyContainer(this.color,
{Key? key,
{super.key,
this.borderRadius,
this.shadows,
this.child,
@ -23,8 +23,7 @@ class FlowyContainer extends StatelessWidget {
this.align,
this.margin,
this.duration,
this.border})
: super(key: key);
this.border});
@override
Widget build(BuildContext context) {

View File

@ -24,7 +24,7 @@ class FlowyHover extends StatefulWidget {
final bool Function()? buildWhenOnHover;
const FlowyHover({
Key? key,
super.key,
this.builder,
this.child,
this.style,
@ -33,7 +33,7 @@ class FlowyHover extends StatefulWidget {
this.cursor,
this.resetHoverOnRebuild = true,
this.buildWhenOnHover,
}) : super(key: key);
});
@override
State<FlowyHover> createState() => _FlowyHoverState();
@ -136,10 +136,10 @@ class FlowyHoverContainer extends StatelessWidget {
final Widget child;
const FlowyHoverContainer({
Key? key,
super.key,
required this.child,
required this.style,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@ -23,7 +23,7 @@ class FlowyIconButton extends StatelessWidget {
final bool? isSelected;
const FlowyIconButton({
Key? key,
super.key,
this.width = 30,
this.height,
this.onPressed,
@ -40,8 +40,7 @@ class FlowyIconButton extends StatelessWidget {
required this.icon,
}) : assert((richTooltipText != null && tooltipText == null) ||
(richTooltipText == null && tooltipText != null) ||
(richTooltipText == null && tooltipText == null)),
super(key: key);
(richTooltipText == null && tooltipText == null));
@override
Widget build(BuildContext context) {

View File

@ -6,8 +6,7 @@ class FlowyImageIcon extends StatelessWidget {
final Color? color;
final double? size;
const FlowyImageIcon(this.image, {Key? key, this.color, this.size})
: super(key: key);
const FlowyImageIcon(this.image, {super.key, this.color, this.size});
@override
Widget build(BuildContext context) {

View File

@ -13,7 +13,7 @@ List<Color> _kDefaultRainbowColors = const [
// CircularProgressIndicator()
class FlowyProgressIndicator extends StatelessWidget {
const FlowyProgressIndicator({Key? key}) : super(key: key);
const FlowyProgressIndicator({super.key});
@override
Widget build(BuildContext context) {

View File

@ -18,7 +18,7 @@ class StyledListView extends StatefulWidget {
final IndexedWidgetBuilder itemBuilder;
StyledListView({
Key? key,
super.key,
required this.itemBuilder,
required this.itemCount,
this.itemExtent,
@ -26,7 +26,7 @@ class StyledListView extends StatefulWidget {
this.padding,
this.barSize,
this.scrollbarPadding,
}) : super(key: key) {
}) {
assert(itemExtent != 0, 'Item extent should never be 0, null is ok.');
}

View File

@ -23,7 +23,7 @@ class StyledScrollbar extends StatefulWidget {
final double? contentSize;
const StyledScrollbar(
{Key? key,
{super.key,
this.size,
required this.axis,
required this.controller,
@ -32,8 +32,7 @@ class StyledScrollbar extends StatefulWidget {
this.showTrack = false,
this.autoHideScrollbar = true,
this.handleColor,
this.trackColor})
: super(key: key);
this.trackColor});
@override
ScrollbarState createState() => ScrollbarState();

View File

@ -16,7 +16,7 @@ class StyledSingleChildScrollView extends StatefulWidget {
final Widget? child;
const StyledSingleChildScrollView({
Key? key,
super.key,
required this.child,
this.contentSize,
this.axis = Axis.vertical,
@ -26,7 +26,7 @@ class StyledSingleChildScrollView extends StatefulWidget {
this.scrollbarPadding,
this.barSize = 8,
this.autoHideScrollbar = true,
}) : super(key: key);
});
@override
State<StyledSingleChildScrollView> createState() =>
@ -89,14 +89,14 @@ class StyledCustomScrollView extends StatefulWidget {
final double barSize;
const StyledCustomScrollView({
Key? key,
super.key,
this.axis = Axis.vertical,
this.trackColor,
this.handleColor,
this.verticalController,
this.slivers = const <Widget>[],
this.barSize = 8,
}) : super(key: key);
});
@override
StyledCustomScrollViewState createState() => StyledCustomScrollViewState();

View File

@ -166,14 +166,11 @@ class StyledSearchTextInputState extends State<StyledSearchTextInput> {
widget.controller ?? TextEditingController(text: widget.initialValue);
_focusNode = FocusNode(
debugLabel: widget.label ?? '',
onKey: (FocusNode node, RawKeyEvent evt) {
if (evt is RawKeyDownEvent) {
if (evt.logicalKey == LogicalKeyboardKey.escape) {
onKeyEvent: (node, event) {
if (event.logicalKey == LogicalKeyboardKey.escape) {
widget.onEditingCancel?.call();
return KeyEventResult.handled;
}
}
return KeyEventResult.ignored;
},
canRequestFocus: true,
@ -273,12 +270,12 @@ class ThinUnderlineBorder extends InputBorder {
/// and right corners have a circular radius of 4.0. The [borderRadius]
/// parameter must not be null.
const ThinUnderlineBorder({
BorderSide borderSide = const BorderSide(),
super.borderSide = const BorderSide(),
this.borderRadius = const BorderRadius.only(
topLeft: Radius.circular(4.0),
topRight: Radius.circular(4.0),
),
}) : super(borderSide: borderSide);
});
/// The radii of the border's rounded rectangle corners.
///

View File

@ -22,7 +22,7 @@ class BaseStyledButton extends StatefulWidget {
final Color outlineColor;
const BaseStyledButton({
Key? key,
super.key,
required this.child,
this.onPressed,
this.onFocusChanged,
@ -39,7 +39,7 @@ class BaseStyledButton extends StatefulWidget {
this.useBtnText = true,
this.autoFocus = false,
this.outlineColor = Colors.transparent,
}) : super(key: key);
});
@override
State<BaseStyledButton> createState() => BaseStyledBtnState();

View File

@ -9,8 +9,7 @@ class PrimaryTextButton extends StatelessWidget {
final TextButtonMode mode;
const PrimaryTextButton(this.label,
{Key? key, this.onPressed, this.mode = TextButtonMode.big})
: super(key: key);
{super.key, this.onPressed, this.mode = TextButtonMode.big});
@override
Widget build(BuildContext context) {
@ -31,11 +30,10 @@ class PrimaryButton extends StatelessWidget {
final TextButtonMode mode;
const PrimaryButton(
{Key? key,
{super.key,
required this.child,
this.onPressed,
this.mode = TextButtonMode.big})
: super(key: key);
this.mode = TextButtonMode.big});
@override
Widget build(BuildContext context) {

View File

@ -7,11 +7,10 @@ class ConstrainedFlexView extends StatelessWidget {
final EdgeInsets scrollPadding;
const ConstrainedFlexView(this.minSize,
{Key? key,
{super.key,
required this.child,
this.axis = Axis.horizontal,
this.scrollPadding = EdgeInsets.zero})
: super(key: key);
this.scrollPadding = EdgeInsets.zero});
bool get isHz => axis == Axis.horizontal;

View File

@ -10,10 +10,10 @@ extension IntoDialog on Widget {
Future<dynamic> show(BuildContext context) async {
FocusNode dialogFocusNode = FocusNode();
await Dialogs.show(
child: RawKeyboardListener(
child: KeyboardListener(
focusNode: dialogFocusNode,
onKey: (value) {
if (value.isKeyPressed(LogicalKeyboardKey.escape)) {
onKeyEvent: (event) {
if (event.logicalKey == LogicalKeyboardKey.escape) {
Navigator.of(context).pop();
}
},
@ -36,7 +36,7 @@ class StyledDialog extends StatelessWidget {
final bool shrinkWrap;
const StyledDialog({
Key? key,
super.key,
required this.child,
this.maxWidth,
this.maxHeight,
@ -45,7 +45,7 @@ class StyledDialog extends StatelessWidget {
this.bgColor,
this.borderRadius = const BorderRadius.all(Radius.circular(6)),
this.shrinkWrap = true,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {
@ -126,11 +126,11 @@ class StyledDialogRoute<T> extends PopupRoute<T> {
required this.barrier,
Duration transitionDuration = const Duration(milliseconds: 300),
RouteTransitionsBuilder? transitionBuilder,
RouteSettings? settings,
super.settings,
}) : _pageBuilder = pageBuilder,
_transitionDuration = transitionDuration,
_transitionBuilder = transitionBuilder,
super(settings: settings, filter: barrier.filter);
super(filter: barrier.filter);
@override
bool get barrierDismissible {

View File

@ -2,10 +2,10 @@ import 'package:flutter/material.dart';
class IgnoreParentGestureWidget extends StatelessWidget {
const IgnoreParentGestureWidget({
Key? key,
super.key,
required this.child,
this.onPress,
}) : super(key: key);
});
final Widget child;
final VoidCallback? onPress;

View File

@ -6,8 +6,7 @@ class MouseHoverBuilder extends StatefulWidget {
final bool isClickable;
const MouseHoverBuilder(
{Key? key, required this.builder, this.isClickable = false})
: super(key: key);
{super.key, required this.builder, this.isClickable = false});
final HoverBuilder builder;

View File

@ -15,7 +15,7 @@ class RoundedTextButton extends StatelessWidget {
final double? fontSize;
const RoundedTextButton({
Key? key,
super.key,
this.onPressed,
this.title,
this.width,
@ -26,7 +26,7 @@ class RoundedTextButton extends StatelessWidget {
this.hoverColor,
this.textColor,
this.fontSize,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {
@ -63,14 +63,14 @@ class RoundedImageButton extends StatelessWidget {
final Widget child;
const RoundedImageButton({
Key? key,
super.key,
this.press,
required this.size,
this.borderRadius = BorderRadius.zero,
this.borderColor = Colors.transparent,
this.color = Colors.transparent,
required this.child,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@ -29,7 +29,7 @@ class RoundedInputField extends StatefulWidget {
final Function(String)? onFieldSubmitted;
const RoundedInputField({
Key? key,
super.key,
this.hintText,
this.errorText = "",
this.initialValue,
@ -52,7 +52,7 @@ class RoundedInputField extends StatefulWidget {
this.autoFocus = false,
this.maxLength,
this.onFieldSubmitted,
}) : super(key: key);
});
@override
State<RoundedInputField> createState() => _RoundedInputFieldState();

View File

@ -4,7 +4,7 @@ class Space extends StatelessWidget {
final double width;
final double height;
const Space(this.width, this.height, {Key? key}) : super(key: key);
const Space(this.width, this.height, {super.key});
@override
Widget build(BuildContext context) => SizedBox(width: width, height: height);

View File

@ -37,7 +37,7 @@ dependencies:
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.1
flutter_lints: ^3.0.1
flutter:
plugin:

View File

@ -1,3 +1,3 @@
include: package:very_good_analysis/analysis_options.5.0.0.yaml
include: package:very_good_analysis/analysis_options.yaml
linter:

View File

@ -5,18 +5,18 @@ packages:
dependency: transitive
description:
name: _fe_analyzer_shared
sha256: "0f7b1783ddb1e4600580b8c00d0ddae5b06ae7f0382bd4fcce5db4df97b618e1"
sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7"
url: "https://pub.dev"
source: hosted
version: "66.0.0"
version: "67.0.0"
analyzer:
dependency: "direct dev"
description:
name: analyzer
sha256: "5e8bdcda061d91da6b034d64d8e4026f355bcb8c3e7a0ac2da1523205a91a737"
sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d"
url: "https://pub.dev"
source: hosted
version: "6.4.0"
version: "6.4.1"
animations:
dependency: transitive
description:
@ -53,11 +53,11 @@ packages:
dependency: "direct main"
description:
path: "."
ref: e80edfc
resolved-ref: e80edfcaaa402c606a642bf9bd1abf523ed15c80
ref: f38328d
resolved-ref: f38328d9e52be89b8036ae0ad3460ce9d6cc5be7
url: "https://github.com/AppFlowy-IO/appflowy-editor.git"
source: git
version: "2.3.1"
version: "2.3.2"
appflowy_editor_plugins:
dependency: "direct main"
description:
@ -102,18 +102,18 @@ packages:
dependency: "direct main"
description:
name: bloc
sha256: "3820f15f502372d979121de1f6b97bfcf1630ebff8fe1d52fb2b0bfa49be5b49"
sha256: f53a110e3b48dcd78136c10daa5d51512443cea5e1348c9d80a320095fa2db9e
url: "https://pub.dev"
source: hosted
version: "8.1.2"
version: "8.1.3"
bloc_test:
dependency: "direct dev"
description:
name: bloc_test
sha256: "02f04270be5abae8df171143e61a0058a7acbce5dcac887612e89bb40cca4c33"
sha256: "55a48f69e0d480717067c5377c8485a3fcd41f1701a820deef72fa0f4ee7215f"
url: "https://pub.dev"
source: hosted
version: "9.1.5"
version: "9.1.6"
boolean_selector:
dependency: transitive
description:
@ -166,10 +166,10 @@ packages:
dependency: transitive
description:
name: build_runner_core
sha256: c9e32d21dd6626b5c163d48b037ce906bbe428bc23ab77bcd77bb21e593b6185
sha256: "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799"
url: "https://pub.dev"
source: hosted
version: "7.2.11"
version: "7.3.0"
built_collection:
dependency: transitive
description:
@ -359,10 +359,10 @@ packages:
dependency: "direct main"
description:
name: device_info_plus
sha256: "0042cb3b2a76413ea5f8a2b40cec2a33e01d0c937e91f0f7c211fde4f7739ba6"
sha256: "77f757b789ff68e4eaf9c56d1752309bd9f7ad557cb105b938a7f8eb89e59110"
url: "https://pub.dev"
source: hosted
version: "9.1.1"
version: "9.1.2"
device_info_plus_platform_interface:
dependency: transitive
description:
@ -399,10 +399,10 @@ packages:
dependency: "direct main"
description:
name: easy_localization
sha256: de63e3b422adfc97f256cbb3f8cf12739b6a4993d390f3cadb3f51837afaefe5
sha256: "9c86754b22aaa3e74e471635b25b33729f958dd6fb83df0ad6612948a7b231af"
url: "https://pub.dev"
source: hosted
version: "3.0.3"
version: "3.0.4"
easy_logger:
dependency: transitive
description:
@ -455,10 +455,10 @@ packages:
dependency: transitive
description:
name: ffi
sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878"
sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21"
url: "https://pub.dev"
source: hosted
version: "2.1.0"
version: "2.1.2"
file:
dependency: transitive
description:
@ -559,10 +559,10 @@ packages:
dependency: "direct main"
description:
name: flutter_bloc
sha256: e74efb89ee6945bcbce74a5b3a5a3376b088e5f21f55c263fc38cbdc6237faae
sha256: "87325da1ac757fcc4813e6b34ed5dd61169973871fdf181d6c2109dd6935ece1"
url: "https://pub.dev"
source: hosted
version: "8.1.3"
version: "8.1.4"
flutter_cache_manager:
dependency: "direct main"
description:
@ -692,10 +692,10 @@ packages:
dependency: "direct dev"
description:
name: freezed
sha256: "6c5031daae12c7072b3a87eff98983076434b4889ef2a44384d0cae3f82372ba"
sha256: "57247f692f35f068cae297549a46a9a097100685c6780fe67177503eea5ed4e5"
url: "https://pub.dev"
source: hosted
version: "2.4.6"
version: "2.4.7"
freezed_annotation:
dependency: "direct main"
description:
@ -745,10 +745,10 @@ packages:
dependency: "direct main"
description:
name: go_router
sha256: "07ee2436909f749d606f53521dc1725dd738dc5196e5ff815bc254253c594075"
sha256: "170c46e237d6eb0e6e9f0e8b3f56101e14fb64f787016e42edd74c39cf8b176a"
url: "https://pub.dev"
source: hosted
version: "13.1.0"
version: "13.2.0"
google_fonts:
dependency: "direct main"
description:
@ -761,10 +761,10 @@ packages:
dependency: transitive
description:
name: gotrue
sha256: "879ac3e981bf5f9b3af156e421688b53823b7af17de7af0d2a37894a8e5f6532"
sha256: f40610bacf1074723354b0856a4f586508ffb075b799f72466f34e843133deb9
url: "https://pub.dev"
source: hosted
version: "2.4.1"
version: "2.5.0"
graphs:
dependency: transitive
description:
@ -950,18 +950,18 @@ packages:
dependency: transitive
description:
name: irondash_engine_context
sha256: "294a0e21c4358ff17264e6b811c615b664cebb33b49ad2ddb54f8110e7714510"
sha256: "4f5e2629296430cce08cdff42e47cef07b8f74a64fdbdfb0525d147bc1a969a2"
url: "https://pub.dev"
source: hosted
version: "0.5.1"
version: "0.5.2"
irondash_message_channel:
dependency: transitive
description:
name: irondash_message_channel
sha256: "131d64d97a3612bc3617aefc878f3e3a8e23e0ce18b3bba8e78cb1930befcec1"
sha256: dd581214215dca054bd9873209d690ec3609288c28774cb509dbd86b21180cf8
url: "https://pub.dev"
source: hosted
version: "0.5.0"
version: "0.6.0"
isolates:
dependency: transitive
description:
@ -1014,18 +1014,26 @@ packages:
dependency: "direct main"
description:
name: leak_tracker
sha256: "04be76c4a4bb50f14904e64749237e541e7c7bcf7ec0b196907322ab5d2fc739"
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
url: "https://pub.dev"
source: hosted
version: "9.0.16"
version: "10.0.0"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
url: "https://pub.dev"
source: hosted
version: "2.0.1"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: b06739349ec2477e943055aea30172c5c7000225f79dad4702e2ec0eda79a6ff
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
url: "https://pub.dev"
source: hosted
version: "1.0.5"
version: "2.0.1"
linked_scroll_controller:
dependency: "direct main"
description:
@ -1102,10 +1110,10 @@ packages:
dependency: transitive
description:
name: matcher
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
url: "https://pub.dev"
source: hosted
version: "0.12.16"
version: "0.12.16+1"
material_color_utilities:
dependency: transitive
description:
@ -1222,10 +1230,10 @@ packages:
dependency: "direct main"
description:
name: path
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
url: "https://pub.dev"
source: hosted
version: "1.8.3"
version: "1.9.0"
path_drawing:
dependency: transitive
description:
@ -1310,18 +1318,18 @@ packages:
dependency: transitive
description:
name: pixel_snap
sha256: d31591a4f4aa8ed5dc6fc00b8d027338a5614dfbf5ca658b69d1faa7aba80af7
sha256: "677410ea37b07cd37ecb6d5e6c0d8d7615a7cf3bd92ba406fd1ac57e937d1fb0"
url: "https://pub.dev"
source: hosted
version: "0.1.4"
version: "0.1.5"
platform:
dependency: transitive
description:
name: platform
sha256: "0a279f0707af40c890e80b1e9df8bb761694c074ba7e1d4ab1bc4b728e200b59"
sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec"
url: "https://pub.dev"
source: hosted
version: "3.1.3"
version: "3.1.4"
plugin_platform_interface:
dependency: "direct dev"
description:
@ -1358,10 +1366,10 @@ packages:
dependency: transitive
description:
name: process
sha256: "266ca5be5820feefc777793d0a583acfc8c40834893c87c00c6c09e2cf58ea42"
sha256: "21e54fd2faf1b5bdd5102afd25012184a6793927648ea81eea80552ac9405b32"
url: "https://pub.dev"
source: hosted
version: "5.0.1"
version: "5.0.2"
protobuf:
dependency: "direct main"
description:
@ -1526,10 +1534,10 @@ packages:
dependency: "direct main"
description:
name: share_plus
sha256: f74fc3f1cbd99f39760182e176802f693fa0ec9625c045561cfad54681ea93dd
sha256: "3ef39599b00059db0990ca2e30fca0a29d8b37aae924d60063f8e0184cf20900"
url: "https://pub.dev"
source: hosted
version: "7.2.1"
version: "7.2.2"
share_plus_platform_interface:
dependency: transitive
description:
@ -1630,10 +1638,10 @@ packages:
dependency: transitive
description:
name: simple_gesture_detector
sha256: "86d08f85f1f58583b7b4b941d989f48ea6ce08c1724a1d10954a277c2ec36592"
sha256: ba2cd5af24ff20a0b8d609cec3f40e5b0744d2a71804a2616ae086b9c19d19a3
url: "https://pub.dev"
source: hosted
version: "0.2.0"
version: "0.2.1"
sized_context:
dependency: "direct main"
description:
@ -1731,10 +1739,10 @@ packages:
dependency: transitive
description:
name: storage_client
sha256: b49ff2e1e6738c0ef445546d6ec77040829947f0c7ef0b115acb125656127c83
sha256: bf5589d5de61a2451edb1b8960a0e673d4bb5c42ecc4dddf7c051a93789ced34
url: "https://pub.dev"
source: hosted
version: "2.0.0"
version: "2.0.1"
stream_channel:
dependency: transitive
description:
@ -1779,10 +1787,10 @@ packages:
dependency: transitive
description:
name: supabase
sha256: f299614f6f44ee26ff1bd293869272fab79a7b087320c3b40572792b32ded06c
sha256: "4bce9c49f264f4cd44b4ffc895647af2dca0c40125c169045be9f708fd2a2a40"
url: "https://pub.dev"
source: hosted
version: "2.0.6"
version: "2.0.7"
supabase_flutter:
dependency: "direct main"
description:
@ -1796,18 +1804,18 @@ packages:
dependency: "direct main"
description:
name: super_clipboard
sha256: "77f044320934386e0b7a3911e05312426d7f33deb6e8cdb28886663430b0e5b0"
sha256: "15d25eb88df8e904e0c2ef77378c6010cc57bbfc0b6f91f2416d08fad5fcca92"
url: "https://pub.dev"
source: hosted
version: "0.8.4"
version: "0.8.5"
super_native_extensions:
dependency: transitive
description:
name: super_native_extensions
sha256: "4699f5b00320290475953c914f823a8b44e10ed8c1e38ce5c8e8426336d11c15"
sha256: f96db6b137a0b135e43034289bb55ca6447b65225076036e81f97ebb6381ffeb
url: "https://pub.dev"
source: hosted
version: "0.8.4"
version: "0.8.5"
sync_http:
dependency: transitive
description:
@ -1948,10 +1956,10 @@ packages:
dependency: transitive
description:
name: url_launcher_android
sha256: "507dc655b1d9cb5ebc756032eb785f114e415f91557b73bf60b7e201dfedeb2f"
sha256: d4ed0711849dd8e33eb2dd69c25db0d0d3fdc37e0a62e629fe32f57a22db2745
url: "https://pub.dev"
source: hosted
version: "6.2.2"
version: "6.3.0"
url_launcher_ios:
dependency: transitive
description:
@ -1980,10 +1988,10 @@ packages:
dependency: "direct dev"
description:
name: url_launcher_platform_interface
sha256: a932c3a8082e118f80a475ce692fde89dc20fddb24c57360b96bc56f7035de1f
sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029"
url: "https://pub.dev"
source: hosted
version: "2.3.1"
version: "2.3.2"
url_launcher_web:
dependency: transitive
description:
@ -2029,26 +2037,26 @@ packages:
dependency: transitive
description:
name: vector_graphics
sha256: "18f6690295af52d081f6808f2f7c69f0eed6d7e23a71539d75f4aeb8f0062172"
sha256: "4ac59808bbfca6da38c99f415ff2d3a5d7ca0a6b4809c71d9cf30fba5daf9752"
url: "https://pub.dev"
source: hosted
version: "1.1.9+2"
version: "1.1.10+1"
vector_graphics_codec:
dependency: transitive
description:
name: vector_graphics_codec
sha256: "531d20465c10dfac7f5cd90b60bbe4dd9921f1ec4ca54c83ebb176dbacb7bb2d"
sha256: f3247e7ab0ec77dc759263e68394990edc608fb2b480b80db8aa86ed09279e33
url: "https://pub.dev"
source: hosted
version: "1.1.9+2"
version: "1.1.10+1"
vector_graphics_compiler:
dependency: transitive
description:
name: vector_graphics_compiler
sha256: "03012b0a33775c5530576b70240308080e1d5050f0faf000118c20e6463bc0ad"
sha256: "18489bdd8850de3dd7ca8a34e0c446f719ec63e2bab2e7a8cc66a9028dd76c5a"
url: "https://pub.dev"
source: hosted
version: "1.1.9+2"
version: "1.1.10+1"
vector_math:
dependency: transitive
description:
@ -2085,10 +2093,10 @@ packages:
dependency: transitive
description:
name: web
sha256: edc8a9573dd8c5a83a183dae1af2b6fd4131377404706ca4e5420474784906fa
sha256: "4188706108906f002b3a293509234588823c8c979dc83304e229ff400c996b05"
url: "https://pub.dev"
source: hosted
version: "0.4.0"
version: "0.4.2"
web_socket_channel:
dependency: transitive
description:
@ -2170,5 +2178,5 @@ packages:
source: hosted
version: "2.0.0"
sdks:
dart: ">=3.2.0 <4.0.0"
flutter: ">=3.18.0-0.2.pre"
dart: ">=3.3.0-279.1.beta <4.0.0"
flutter: ">=3.19.0"

View File

@ -18,7 +18,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
version: 0.4.9
environment:
flutter: ">=3.18.0-0.2.pre"
flutter: ">=3.19.0"
sdk: ">=3.1.5 <4.0.0"
# Dependencies specify other packages that your package needs in order to work.
@ -124,7 +124,7 @@ dependencies:
image_picker: ^1.0.4
image_gallery_saver: ^2.0.3
cached_network_image: ^3.3.0
leak_tracker: ^9.0.6
leak_tracker: ^10.0.0
keyboard_height_plugin: ^0.0.5
scrollable_positioned_list: ^0.3.8
flutter_cache_manager: ^3.3.1
@ -139,7 +139,7 @@ dev_dependencies:
integration_test:
sdk: flutter
build_runner: ^2.4.4
freezed: ^2.3.4
freezed: ^2.4.7
bloc_test: ^9.1.2
json_serializable: ^6.7.0
envied_generator: ^0.5.2
@ -165,7 +165,7 @@ dependency_overrides:
appflowy_editor:
git:
url: https://github.com/AppFlowy-IO/appflowy-editor.git
ref: "e80edfc"
ref: "f38328d"
uuid: ^4.1.0

View File

@ -66,7 +66,7 @@ void main() {
await widgetTester.pumpAndSettle();
expect(find.byType(AlertDialog), findsOneWidget);
expect(find.byType(RawKeyboardListener), findsOneWidget);
expect(find.byType(KeyboardListener), findsOneWidget);
});
testWidgets("updates the text with new key event",
@ -83,7 +83,7 @@ void main() {
await widgetTester.pumpAndSettle();
expect(find.byType(AlertDialog), findsOneWidget);
expect(find.byType(RawKeyboardListener), findsOneWidget);
expect(find.byType(KeyboardListener), findsOneWidget);
await widgetTester.sendKeyEvent(LogicalKeyboardKey.keyC);

View File

@ -39,7 +39,7 @@ RUN source ~/.cargo/env && \
RUN sudo pacman -S --noconfirm git tar gtk3
RUN curl -sSfL \
--output flutter.tar.xz \
https://storage.googleapis.com/flutter_infra_release/releases/beta/linux/flutter_linux_3.18.0-0.2.pre-beta.tar.xz && \
https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.19.0-stable.tar.xz && \
tar -xf flutter.tar.xz && \
rm flutter.tar.xz
RUN flutter config --enable-linux-desktop

View File

@ -44,9 +44,9 @@ printMessage "Setting up Flutter"
# Get the current Flutter version
FLUTTER_VERSION=$(flutter --version | grep -oE 'Flutter [^ ]+' | grep -oE '[^ ]+$')
# Check if the current version is 3.18.0-0.2.pre2
if [ "$FLUTTER_VERSION" = "3.18.0-0.2.pre2" ]; then
echo "Flutter version is already 3.18.0-0.2.pre2"
# Check if the current version is 3.19.0
if [ "$FLUTTER_VERSION" = "3.19.0" ]; then
echo "Flutter version is already 3.19.0"
else
# Get the path to the Flutter SDK
FLUTTER_PATH=$(which flutter)
@ -55,12 +55,12 @@ else
current_dir=$(pwd)
cd $FLUTTER_PATH
# Use git to checkout version 3.18.0-0.2.pre2 of Flutter
git checkout 3.18.0-0.2.pre2
# Use git to checkout version 3.19.0 of Flutter
git checkout 3.19.0
# Get back to current working directory
cd "$current_dir"
echo "Switched to Flutter version 3.18.0-0.2.pre2"
echo "Switched to Flutter version 3.19.0"
fi
# Enable linux desktop

View File

@ -38,9 +38,9 @@ fi
printMessage "Setting up Flutter"
# Get the current Flutter version
FLUTTER_VERSION=$(flutter --version | grep -oP 'Flutter \K\S+')
# Check if the current version is 3.18.0-0.2.pre2
if [ "$FLUTTER_VERSION" = "3.18.0-0.2.pre2" ]; then
echo "Flutter version is already 3.18.0-0.2.pre2"
# Check if the current version is 3.19.0
if [ "$FLUTTER_VERSION" = "3.19.0" ]; then
echo "Flutter version is already 3.19.0"
else
# Get the path to the Flutter SDK
FLUTTER_PATH=$(which flutter)
@ -49,12 +49,12 @@ else
current_dir=$(pwd)
cd $FLUTTER_PATH
# Use git to checkout version 3.18.0-0.2.pre2 of Flutter
git checkout 3.18.0-0.2.pre2
# Use git to checkout version 3.19.0 of Flutter
git checkout 3.19.0
# Get back to current working directory
cd "$current_dir"
echo "Switched to Flutter version 3.18.0-0.2.pre2"
echo "Switched to Flutter version 3.19.0"
fi
# Enable linux desktop

View File

@ -41,9 +41,9 @@ printMessage "Setting up Flutter"
# Get the current Flutter version
FLUTTER_VERSION=$(flutter --version | grep -oE 'Flutter [^ ]+' | grep -oE '[^ ]+$')
# Check if the current version is 3.18.0-0.2.pre2
if [ "$FLUTTER_VERSION" = "3.18.0-0.2.pre2" ]; then
echo "Flutter version is already 3.18.0-0.2.pre2"
# Check if the current version is 3.19.0
if [ "$FLUTTER_VERSION" = "3.19.0" ]; then
echo "Flutter version is already 3.19.0"
else
# Get the path to the Flutter SDK
FLUTTER_PATH=$(which flutter)
@ -52,12 +52,12 @@ else
current_dir=$(pwd)
cd $FLUTTER_PATH
# Use git to checkout version 3.18.0-0.2.pre2 of Flutter
git checkout 3.18.0-0.2.pre2
# Use git to checkout version 3.19.0 of Flutter
git checkout 3.19.0
# Get back to current working directory
cd "$current_dir"
echo "Switched to Flutter version 3.18.0-0.2.pre2"
echo "Switched to Flutter version 3.19.0"
fi
# Enable linux desktop

View File

@ -48,9 +48,9 @@ fi
printMessage "Setting up Flutter"
# Get the current Flutter version
FLUTTER_VERSION=$(flutter --version | grep -oP 'Flutter \K\S+')
# Check if the current version is 3.18.0-0.2.pre2
if [ "$FLUTTER_VERSION" = "3.18.0-0.2.pre2" ]; then
echo "Flutter version is already 3.18.0-0.2.pre2"
# Check if the current version is 3.19.0
if [ "$FLUTTER_VERSION" = "3.19.0" ]; then
echo "Flutter version is already 3.19.0"
else
# Get the path to the Flutter SDK
FLUTTER_PATH=$(which flutter)
@ -59,12 +59,12 @@ else
current_dir=$(pwd)
cd $FLUTTER_PATH
# Use git to checkout version 3.18.0-0.2.pre2 of Flutter
git checkout 3.18.0-0.2.pre2
# Use git to checkout version 3.19.0 of Flutter
git checkout 3.19.0
# Get back to current working directory
cd "$current_dir"
echo "Switched to Flutter version 3.18.0-0.2.pre2"
echo "Switched to Flutter version 3.19.0"
fi
# Add pub cache and cargo to PATH