_ReplyPreview nutzt den Sprung-Mechanismus der Suche (pendingJumpEventProvider). Der Sprung scrollt jetzt schrittweise Richtung aeltere Nachrichten, wenn das Ziel zwar geladen, aber in der lazy ListView noch nicht gezeichnet ist (vorher gab er dann nach 40 Versuchen auf); dasselbe Zitat darf erneut angetippt werden. UI-Durchlauf prueft den Sprung per Screenshot. Co-Authored-By: Claude Opus 5.5 <[email protected]>
36 lines
1.5 KiB
Dart
36 lines
1.5 KiB
Dart
import 'dart:convert';
|
|
import 'dart:io';
|
|
|
|
import 'package:collection/collection.dart';
|
|
import 'package:flutter/gestures.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:path_provider/path_provider.dart';
|
|
import 'package:pyramid/features/chat/media_player.dart';
|
|
import 'package:flutter/services.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:matrix/matrix.dart';
|
|
import 'package:pyramid/core/app_state.dart'
|
|
show messageStyleProvider, pendingJumpEventProvider;
|
|
import 'package:pyramid/core/appearance.dart';
|
|
import 'package:pyramid/core/matrix_client.dart';
|
|
import 'package:pyramid/core/media_cache.dart';
|
|
import 'package:pyramid/core/theme.dart';
|
|
import 'package:pyramid/features/chat/emoji_picker.dart';
|
|
import 'package:flutter_svg/flutter_svg.dart';
|
|
import 'package:pyramid/features/chat/document_viewer.dart';
|
|
import 'package:pyramid/features/chat/media_viewer.dart';
|
|
import 'package:pyramid/features/chat/reaction_service.dart';
|
|
import 'package:pyramid/utils/gif_favorite_service.dart';
|
|
import 'package:pyramid/widgets/mxc_image.dart';
|
|
import 'package:pyramid/widgets/spring_press.dart';
|
|
import 'package:url_launcher/url_launcher.dart';
|
|
|
|
part 'message/message_group_core.dart';
|
|
part 'message/message_bubbles.dart';
|
|
part 'message/message_text.dart';
|
|
part 'message/message_link_preview.dart';
|
|
part 'message/message_media.dart';
|
|
part 'message/message_reactions.dart';
|
|
part 'message/message_actions.dart';
|
|
part 'message/message_shared.dart';
|