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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project # 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. # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true' ENV['COCOAPODS_DISABLE_STATS'] = 'true'

View File

@ -169,8 +169,8 @@ SPEC CHECKSUMS:
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179 DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
file_picker: 15fd9539e4eb735dc54bae8c0534a7a9511a03de file_picker: 15fd9539e4eb735dc54bae8c0534a7a9511a03de
flowy_infra_ui: 0455e1fa8c51885aa1437848e361e99419f34ebc flowy_infra_ui: 0455e1fa8c51885aa1437848e361e99419f34ebc
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
fluttertoast: fafc4fa4d01a6a9e4f772ecd190ffa525e9e2d9c fluttertoast: 31b00dabfa7fb7bacd9e7dbee580d7a2ff4bf265
image_gallery_saver: cb43cc43141711190510e92c460eb1655cd343cb image_gallery_saver: cb43cc43141711190510e92c460eb1655cd343cb
image_picker_ios: 99dfe1854b4fa34d0364e74a78448a0151025425 image_picker_ios: 99dfe1854b4fa34d0364e74a78448a0151025425
integration_test: 13825b8a9334a850581300559b8839134b124670 integration_test: 13825b8a9334a850581300559b8839134b124670
@ -189,6 +189,6 @@ SPEC CHECKSUMS:
Toast: 91b396c56ee72a5790816f40d3a94dd357abc196 Toast: 91b396c56ee72a5790816f40d3a94dd357abc196
url_launcher_ios: bbd758c6e7f9fd7b5b1d4cde34d2b95fcce5e812 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 */ = { 97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
LastUpgradeCheck = 1430; LastUpgradeCheck = 1510;
ORGANIZATIONNAME = ""; ORGANIZATIONNAME = "";
TargetAttributes = { TargetAttributes = {
97C146ED1CF9000F007C117D = { 97C146ED1CF9000F007C117D = {
@ -330,7 +330,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos; SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos; SUPPORTED_PLATFORMS = iphoneos;
@ -419,7 +419,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = YES; MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos; SDKROOT = iphoneos;
@ -468,7 +468,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos; SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos; SUPPORTED_PLATFORMS = iphoneos;

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "1430" LastUpgradeVersion = "1510"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" 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; controller.text = fieldOptionValues.name;
}); });
} else { } else {
if (mounted) { if (context.mounted) {
context.pop(); context.pop();
} }
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -196,12 +196,11 @@ class MathEquationBlockComponentWidgetState
title: Text( title: Text(
LocaleKeys.document_plugins_mathEquation_editMathEquation.tr(), LocaleKeys.document_plugins_mathEquation_editMathEquation.tr(),
), ),
content: RawKeyboardListener( content: KeyboardListener(
focusNode: FocusNode(), focusNode: FocusNode(),
onKey: (key) { onKeyEvent: (key) {
if (key is! RawKeyDownEvent) return;
if (key.logicalKey == LogicalKeyboardKey.enter && if (key.logicalKey == LogicalKeyboardKey.enter &&
!key.isShiftPressed) { !HardwareKeyboard.instance.isShiftPressed) {
updateMathEquation(controller.text, context); updateMathEquation(controller.text, context);
} else if (key.logicalKey == LogicalKeyboardKey.escape) { } else if (key.logicalKey == LogicalKeyboardKey.escape) {
dismiss(context); 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/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/inline_actions/inline_actions_menu.dart'; import 'package:appflowy/plugins/inline_actions/inline_actions_menu.dart';
import 'package:appflowy/plugins/inline_actions/inline_actions_result.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:collection/collection.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra_ui/style_widget/text.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 /// All heights are in physical pixels
const double _groupTextHeight = 14; // 12 height + 2 bottom spacing const double _groupTextHeight = 14; // 12 height + 2 bottom spacing
@ -145,7 +144,7 @@ class _InlineActionsHandlerState extends State<InlineActionsHandler> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Focus( return Focus(
focusNode: _focusNode, focusNode: _focusNode,
onKey: onKey, onKeyEvent: onKeyEvent,
child: Container( child: Container(
constraints: BoxConstraints.loose(const Size(200, _menuHeight)), constraints: BoxConstraints.loose(const Size(200, _menuHeight)),
decoration: BoxDecoration( decoration: BoxDecoration(
@ -208,11 +207,7 @@ class _InlineActionsHandlerState extends State<InlineActionsHandler> {
InlineActionsMenuItem handlerOf(int groupIndex, int handlerIndex) => InlineActionsMenuItem handlerOf(int groupIndex, int handlerIndex) =>
results[groupIndex].results[handlerIndex]; results[groupIndex].results[handlerIndex];
KeyEventResult onKey(focus, event) { KeyEventResult onKeyEvent(focus, KeyEvent event) {
if (event is! RawKeyDownEvent) {
return KeyEventResult.ignored;
}
const moveKeys = [ const moveKeys = [
LogicalKeyboardKey.arrowUp, LogicalKeyboardKey.arrowUp,
LogicalKeyboardKey.arrowDown, LogicalKeyboardKey.arrowDown,
@ -348,7 +343,7 @@ class _InlineActionsHandlerState extends State<InlineActionsHandler> {
if (key == LogicalKeyboardKey.arrowUp || if (key == LogicalKeyboardKey.arrowUp ||
(key == LogicalKeyboardKey.tab && (key == LogicalKeyboardKey.tab &&
RawKeyboard.instance.isShiftPressed)) { HardwareKeyboard.instance.isShiftPressed)) {
if (_selectedIndex == 0 && _selectedGroup > 0) { if (_selectedIndex == 0 && _selectedGroup > 0) {
_selectedGroup -= 1; _selectedGroup -= 1;
_selectedIndex = lengthOfGroup(_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()); 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/generated/locale_keys.g.dart';
import 'package:appflowy/workspace/application/sidebar/folder/folder_bloc.dart'; import 'package:appflowy/workspace/application/sidebar/folder/folder_bloc.dart';
import 'package:appflowy/workspace/application/tabs/tabs_bloc.dart'; import 'package:appflowy/workspace/application/tabs/tabs_bloc.dart';
@ -54,7 +53,7 @@ class FavoriteFolder extends StatelessWidget {
view: view, view: view,
level: 0, level: 0,
onSelected: (view) { onSelected: (view) {
if (RawKeyboard.instance.isControlPressed) { if (HardwareKeyboard.instance.isControlPressed) {
context.read<TabsBloc>().openTab(view); 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/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart'; import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/workspace/application/menu/menu_bloc.dart'; import 'package:appflowy/workspace/application/menu/menu_bloc.dart';
@ -53,7 +52,7 @@ class PersonalFolder extends StatelessWidget {
leftPadding: 16, leftPadding: 16,
isFeedback: false, isFeedback: false,
onSelected: (view) { onSelected: (view) {
if (RawKeyboard.instance.isControlPressed) { if (HardwareKeyboard.instance.isControlPressed) {
context.read<TabsBloc>().openTab(view); context.read<TabsBloc>().openTab(view);
} }

View File

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

View File

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

View File

@ -202,12 +202,12 @@ class _ChangeStoragePathButtonState extends State<_ChangeStoragePathButton> {
if (path == null || widget.usingPath == path) { if (path == null || widget.usingPath == path) {
return; return;
} }
if (!mounted) { if (!context.mounted) {
return; return;
} }
await context.read<SettingsLocationCubit>().setCustomPath(path); await context.read<SettingsLocationCubit>().setCustomPath(path);
await runAppFlowy(isAnon: true); await runAppFlowy(isAnon: true);
if (mounted) { if (context.mounted) {
Navigator.of(context).pop(); Navigator.of(context).pop();
} }
}, },
@ -272,14 +272,14 @@ class _RecoverDefaultStorageButtonState
if (widget.usingPath == path) { if (widget.usingPath == path) {
return; return;
} }
if (!mounted) { if (!context.mounted) {
return; return;
} }
await context await context
.read<SettingsLocationCubit>() .read<SettingsLocationCubit>()
.resetDataStoragePathToApplicationDefault(); .resetDataStoragePathToApplicationDefault();
await runAppFlowy(isAnon: true); await runAppFlowy(isAnon: true);
if (mounted) { if (context.mounted) {
Navigator.of(context).pop(); 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/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/date_time_format_ext.dart';
import 'package:appflowy/workspace/presentation/widgets/date_picker/utils/user_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_editor/appflowy_editor.dart';
import 'package:appflowy_popover/appflowy_popover.dart'; import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra_ui/style_widget/decoration.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 /// Provides arguemnts for [AppFlowyDatePicker] when showing
/// a [DatePickerMenu] /// a [DatePickerMenu]
@ -118,11 +117,10 @@ class DatePickerMenu extends DatePickerService {
child: SizedBox( child: SizedBox(
height: editorSize.height, height: editorSize.height,
width: editorSize.width, width: editorSize.width,
child: RawKeyboardListener( child: KeyboardListener(
focusNode: FocusNode()..requestFocus(), focusNode: FocusNode()..requestFocus(),
onKey: (event) { onKeyEvent: (event) {
if (event is RawKeyDownEvent && if (event.logicalKey == LogicalKeyboardKey.escape) {
event.logicalKey == LogicalKeyboardKey.escape) {
dismiss(); 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; isa = PBXProject;
attributes = { attributes = {
LastSwiftUpdateCheck = 0920; LastSwiftUpdateCheck = 0920;
LastUpgradeCheck = 1430; LastUpgradeCheck = 1510;
ORGANIZATIONNAME = ""; ORGANIZATIONNAME = "";
TargetAttributes = { TargetAttributes = {
33CC10EC2044A3C60003C045 = { 33CC10EC2044A3C60003C045 = {

View File

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

View File

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

View File

@ -25,7 +25,7 @@ dev_dependencies:
sdk: flutter sdk: flutter
build_runner: build_runner:
freezed: freezed:
flutter_lints: ^2.0.1 flutter_lints: ^3.0.1
json_serializable: ^6.6.2 json_serializable: ^6.6.2
# For information on the generic Dart part of this file, see the # 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'; import 'package:appflowy_popover/appflowy_popover.dart';
class PopoverMenu extends StatefulWidget { class PopoverMenu extends StatefulWidget {
const PopoverMenu({Key? key}) : super(key: key); const PopoverMenu({super.key});
@override @override
State<StatefulWidget> createState() => _PopoverMenuState(); State<StatefulWidget> createState() => _PopoverMenuState();
@ -77,11 +77,11 @@ class ExampleButton extends StatelessWidget {
final PopoverDirection? direction; final PopoverDirection? direction;
const ExampleButton({ const ExampleButton({
Key? key, super.key,
required this.label, required this.label,
this.direction, this.direction,
this.offset = Offset.zero, this.offset = Offset.zero,
}) : super(key: key); });
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

View File

@ -7,7 +7,7 @@ void main() {
} }
class MyApp extends StatelessWidget { class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key); const MyApp({super.key});
// This widget is the root of your application. // This widget is the root of your application.
@override @override
@ -32,7 +32,7 @@ class MyApp extends StatelessWidget {
} }
class MyHomePage extends StatefulWidget { 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 // 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 // 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 # activated in the `analysis_options.yaml` file located at the root of your
# package. See that file for information about deactivating specific lint # package. See that file for information about deactivating specific lint
# rules and activating additional ones. # 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 # For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec # following page: https://dart.dev/tools/pub/pubspec

View File

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

View File

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

View File

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

View File

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

View File

@ -26,8 +26,8 @@ dev_dependencies:
flutter_test: flutter_test:
sdk: flutter sdk: flutter
build_runner: ^2.2.0 build_runner: ^2.2.0
flutter_lints: ^2.0.1 flutter_lints: ^3.0.1
freezed: 2.2.0 freezed: ^2.4.7
json_serializable: ^6.5.4 json_serializable: ^6.5.4
# For information on the generic Dart part of this file, see the # 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'; import 'demo_item.dart';
class HomeScreen extends StatelessWidget { class HomeScreen extends StatelessWidget {
const HomeScreen({Key? key}) : super(key: key); const HomeScreen({super.key});
static List<ListItem> items = [ static List<ListItem> items = [
SectionHeaderItem('Widget Demos'), SectionHeaderItem('Widget Demos'),

View File

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

View File

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

View File

@ -44,7 +44,7 @@ class OverlayDemoConfiguration extends ChangeNotifier {
} }
class OverlayScreen extends StatelessWidget { class OverlayScreen extends StatelessWidget {
const OverlayScreen({Key? key}) : super(key: key); const OverlayScreen({super.key});
@override @override
Widget build(BuildContext context) { 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 publish_to: 'none' # Remove this line if you wish to publish to pub.dev
environment: environment:
sdk: ">=2.12.0 <3.0.0" flutter: ">=3.19.0"
sdk: ">=3.1.5 <4.0.0"
dependencies: dependencies:
flutter: flutter:
@ -20,7 +21,7 @@ dev_dependencies:
flutter_test: flutter_test:
sdk: flutter sdk: flutter
flutter_lints: ^2.0.1 flutter_lints: ^3.0.1
flutter: flutter:
uses-material-design: true uses-material-design: true

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -18,7 +18,7 @@ class StyledListView extends StatefulWidget {
final IndexedWidgetBuilder itemBuilder; final IndexedWidgetBuilder itemBuilder;
StyledListView({ StyledListView({
Key? key, super.key,
required this.itemBuilder, required this.itemBuilder,
required this.itemCount, required this.itemCount,
this.itemExtent, this.itemExtent,
@ -26,7 +26,7 @@ class StyledListView extends StatefulWidget {
this.padding, this.padding,
this.barSize, this.barSize,
this.scrollbarPadding, this.scrollbarPadding,
}) : super(key: key) { }) {
assert(itemExtent != 0, 'Item extent should never be 0, null is ok.'); 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; final double? contentSize;
const StyledScrollbar( const StyledScrollbar(
{Key? key, {super.key,
this.size, this.size,
required this.axis, required this.axis,
required this.controller, required this.controller,
@ -32,8 +32,7 @@ class StyledScrollbar extends StatefulWidget {
this.showTrack = false, this.showTrack = false,
this.autoHideScrollbar = true, this.autoHideScrollbar = true,
this.handleColor, this.handleColor,
this.trackColor}) this.trackColor});
: super(key: key);
@override @override
ScrollbarState createState() => ScrollbarState(); ScrollbarState createState() => ScrollbarState();

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -37,7 +37,7 @@ dependencies:
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
sdk: flutter sdk: flutter
flutter_lints: ^2.0.1 flutter_lints: ^3.0.1
flutter: flutter:
plugin: 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: linter:

View File

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

View File

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

View File

@ -39,7 +39,7 @@ RUN source ~/.cargo/env && \
RUN sudo pacman -S --noconfirm git tar gtk3 RUN sudo pacman -S --noconfirm git tar gtk3
RUN curl -sSfL \ RUN curl -sSfL \
--output flutter.tar.xz \ --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 && \ tar -xf flutter.tar.xz && \
rm flutter.tar.xz rm flutter.tar.xz
RUN flutter config --enable-linux-desktop RUN flutter config --enable-linux-desktop

View File

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

View File

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

View File

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

View File

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