簡體   English   中英

iOS 應用程序在向后滑動手勢時凍結約 0.5 秒

[英]iOS app freeze for ~0.5 second on swipe back gesture

我正在使用 Flutter 來開發我們的移動應用程序。 當我像這樣打開新屏幕時:

   Navigator.push(
          context,
          MaterialPageRoute/CupertinoPageRoute(
            builder: (context) => NewScreen(....),
          ));

我使用滑動手勢向后滑動,用戶界面在 0.5 - 1 秒后不可點擊。 它使應用程序感覺反應遲鈍和緩慢。 是什么導致了這種“凍結”? 有什么東西在吃觸摸事件嗎?

類似問題: https://github.com/flutter/flutter/issues/48225

我嘗試使用@edwardez 提供的示例代碼調查此問題,發現這是由於...

文件:routes.dart Class:_ModalScopeState Function:構建(...)行:

AnimatedBuilder(
    // !!!!!!!!!!!!!!!!!!!!!!!!! userGestureInProgressNotifier becomes true
    animation: widget.route.navigator?.userGestureInProgressNotifier ?? ValueNotifier<bool>(false),
    builder: (BuildContext context, Widget child) {
        final bool ignoreEvents = _shouldIgnoreFocusRequest;
        focusScopeNode.canRequestFocus = !ignoreEvents;
        return IgnorePointer(
            ignoring: false,//ignoreEvents,  // <<<<<<<<<<<<<< Tried setting it to FALSE, resolves the issue.
            child: child,
        );
    },
    child: child,
),

IgnorePointerignoring屬性設置為 false 會保留第一個屏幕的 animation 並解決問題。

當我嘗試將userGestureInProgressNotifier設置為始終返回 false 並恢復我在 IgnorePointer 中的更改時...

文件:navigator.dart Function:設置_userGesturesInProgress 行:

set _userGesturesInProgress(int value) {
    _userGesturesInProgressCount = value;
    //userGestureInProgressNotifier.value = _userGesturesInProgress > 0; // <<<<<< Commented
}

這也解決了問題,但第一個屏幕沒有 animation。 (與在 AppBar 中按下后退按鈕相同)。

我的Flutter博士...

[✓] Flutter (Channel stable, 1.22.5, on macOS 11.1 20C69 darwin-x64, locale en-US)
    • Flutter version 1.22.5 at /Users/rickkystiannelim/Documents/sdk/flutter
    • Framework revision 7891006299 (5 weeks ago), 2020-12-10 11:54:40 -0800
    • Engine revision ae90085a84
    • Dart version 2.10.4

 
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/rickkystiannelim/Library/Android/sdk
    • Platform android-30, build-tools 30.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.2, Build version 12B45b
    • CocoaPods version 1.9.3

[!] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[✓] VS Code (version 1.52.1)         // <<<<<<<<<<<<<< IDE used
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.18.1

 
[✓] Connected device (1 available)                    
    • ASUS Z012DA (mobile) • G8AZCY00Z1714K5 • android-arm64 • Android 8.0.0 (API 26) // <<<<<< Device used

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM