問題タブ [flutter-sliver]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dart - Flutter Viewport の双方向無限スクロールで子オフセットの更新遅延を修正する方法
そのため、各 SliverItem にスティッキー ヘッダーを使用して双方向スクロールを作成しようとしています。
https://github.com/fluttercommunity/flutter_sticky_headersをアイテムとして使用して、両方向にスクロールを無限にしました。
ここにいくつかのスクリーンキャストがあります - https://i.ibb.co/ZLJvwsG/sticky-jump.gif
問題は、両方の SliverLists がビューポートに表示されると、スティッキー ヘッダーがジャンプし始めることです。StickyHeader パッケージは非常に単純markNeedsLayout
です。スクロール位置が変更されたときに、ヘッダー el の位置を (リスナーとして) 更新するだけです。
これが位置計算です - https://github.com/fluttercommunity/flutter_sticky_headers/blob/master/lib/sticky_headers/render.dart#L94
ここにイベントバインドがあります https://github.com/fluttercommunity/flutter_sticky_headers/blob/master/lib/sticky_headers/render.dart#L79
_scrollable
で定義されていますScrollable.of(context);
このタイプの効果を作成するのは、少し遅れてイベントが発生したり、ビューポートが再描画されたりするように見えます。
助けが必要なのか、解決策や説明が必要なのか - なぜそれが起こるのか?
本当は理由だけでいいんですけどね)そもそもなんでこうなったのか知りたいです。理解することで、私は機能するソリューションを提供できるようになります)
アップデート
わかりましたので、しばらくして、元の問題が何であるかを見つけました。必要に応じてスクロールリストを作成するために、この問題を解決するために独自のパッケージを作成しました)
https://github.com/TatsuUkraine/flutter_sticky_infinite_list
そのようなパッケージのほとんどがスクロール イベントにバインドする方法と、スティッキー アイテムの位置を計算する方法を変更したため、元の質問で説明されている問題はありません。
自由に使用して提案してください)
dart - テキスト フィールドがスライバーに配置されている場合、キーボードが正しく表示されない
Cupertino ウィジェットとスライバーを使用して検索バーを作成しようとしています。現在、私は次の構造を持っています:
SliverPersistentHeader にはデリゲートがあり、次の方法で実装されます。
画面ウィジェットは次のようになります。
問題は、テキスト フィールドにフォーカスすると、キーボードが表示されようとしているように見えますが、すぐに非表示になることです。この動作は scrollview イベントが原因で発生すると考えていましたが、CustomScrollView に ScrollController を追加しても結果は得られませんでした (テキスト フィールドのフォーカス中にスクロール イベントは発生しませんでした)。
また、問題はシミュレーターでのみ発生すると考えていましたが、実際のデバイスでは動作は同じです。
問題のビデオデモは次のとおりです。
更新: Raja Jain のおかげで、問題はスライバーやCategoriesScreen
ウィジェット自体ではなく、CupertinoTabScaffold
このウィジェットがラップされていることがわかりました。のホームウィジェットを削除してウィジェットに直接CupertinoTabScaffold
設定すると、問題はなくなります。これが私のここです、それが役立つことを願っていますが、特別なことは何もないので方法がわかりません:CupertinoApp
CategoriesScreen
main.dart