mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
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:
parent
b2e55c4e2e
commit
252699d249
12
.github/workflows/flutter_ci.yaml
vendored
12
.github/workflows/flutter_ci.yaml
vendored
@ -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
|
||||||
|
4
.github/workflows/mobile_ci.yaml
vendored
4
.github/workflows/mobile_ci.yaml
vendored
@ -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
|
||||||
|
|
||||||
|
10
.github/workflows/release.yml
vendored
10
.github/workflows/release.yml
vendored
@ -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
|
||||||
|
4
.github/workflows/rust_coverage.yml
vendored
4
.github/workflows/rust_coverage.yml
vendored
@ -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
|
||||||
|
|
||||||
|
@ -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>
|
||||||
|
@ -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'
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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"
|
||||||
|
@ -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),
|
|
||||||
);
|
|
||||||
}
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -138,12 +138,11 @@ 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();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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: [
|
||||||
|
@ -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(),
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -34,7 +34,7 @@ class MemoryLeakDetectorTask extends LaunchTask {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
MemoryAllocations.instance.addListener((p0) {
|
FlutterMemoryAllocations.instance.addListener((p0) {
|
||||||
LeakTracking.dispatchObjectEvent(p0.toMap());
|
LeakTracking.dispatchObjectEvent(p0.toMap());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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+';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -206,7 +206,7 @@
|
|||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
attributes = {
|
attributes = {
|
||||||
LastSwiftUpdateCheck = 0920;
|
LastSwiftUpdateCheck = 0920;
|
||||||
LastUpgradeCheck = 1430;
|
LastUpgradeCheck = 1510;
|
||||||
ORGANIZATIONNAME = "";
|
ORGANIZATIONNAME = "";
|
||||||
TargetAttributes = {
|
TargetAttributes = {
|
||||||
33CC10EC2044A3C60003C045 = {
|
33CC10EC2044A3C60003C045 = {
|
||||||
|
@ -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"
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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) {
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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) {
|
||||||
|
@ -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();
|
||||||
|
@ -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
|
||||||
|
@ -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';
|
||||||
|
@ -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
|
||||||
|
@ -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'),
|
||||||
|
@ -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();
|
||||||
|
@ -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) {
|
||||||
|
@ -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) {
|
||||||
|
@ -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
|
||||||
|
@ -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:
|
@ -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:
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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) {
|
||||||
|
@ -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) {
|
||||||
|
@ -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) {
|
||||||
|
@ -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) {
|
||||||
|
@ -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) {
|
||||||
|
@ -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) {
|
||||||
|
@ -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) {
|
||||||
|
@ -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) {
|
||||||
|
@ -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) {
|
||||||
|
@ -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.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
|
@ -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.
|
||||||
///
|
///
|
||||||
|
@ -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();
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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 {
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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) {
|
||||||
|
@ -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();
|
||||||
|
@ -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);
|
||||||
|
@ -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:
|
||||||
|
@ -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:
|
||||||
|
@ -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"
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user