don't calculate page size if renderbox isn't yet laid out and don't show overlay if context is null
This commit is contained in:
parent
929843248c
commit
1d6db1aabf
7 changed files with 146 additions and 73 deletions
|
|
@ -45,6 +45,7 @@ class ChatEventList extends StatelessWidget {
|
|||
// after the chat event list mounts, if the user hasn't yet seen this instruction
|
||||
// card, attach it on top of the first shown message
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
if (events.isEmpty) return;
|
||||
controller.pangeaController.instructions.show(
|
||||
context,
|
||||
InstructionsEnum.clickMessage,
|
||||
|
|
|
|||
|
|
@ -3,11 +3,13 @@ import 'package:flutter/scheduler.dart';
|
|||
|
||||
class MeasurableWidget extends StatefulWidget {
|
||||
final Widget child;
|
||||
|
||||
Function? triggerMeasure;
|
||||
final Function(Size? size, Offset? position) onChange;
|
||||
|
||||
MeasurableWidget({super.key, required this.onChange, required this.child});
|
||||
const MeasurableWidget({
|
||||
super.key,
|
||||
required this.onChange,
|
||||
required this.child,
|
||||
});
|
||||
|
||||
@override
|
||||
_WidgetSizeState createState() => _WidgetSizeState();
|
||||
|
|
@ -26,20 +28,22 @@ class _WidgetSizeState extends State<MeasurableWidget> {
|
|||
final context = widgetKey.currentContext;
|
||||
if (context == null) return;
|
||||
|
||||
final newSize = context.size;
|
||||
|
||||
final RenderBox? box =
|
||||
widgetKey.currentContext?.findRenderObject() as RenderBox?;
|
||||
final Offset? position = box?.localToGlobal(Offset.zero);
|
||||
|
||||
if (oldPosition != null) {
|
||||
if (oldPosition!.dx == position!.dx && oldPosition!.dy == position.dy) {
|
||||
return;
|
||||
if (box != null && box.hasSize) {
|
||||
final Offset position = box.localToGlobal(Offset.zero);
|
||||
|
||||
if (oldPosition != null) {
|
||||
if (oldPosition!.dx == position.dx && oldPosition!.dy == position.dy) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
oldPosition = position;
|
||||
oldPosition = position;
|
||||
|
||||
widget.onChange(newSize, position);
|
||||
final newSize = context.size;
|
||||
widget.onChange(newSize, position);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
|
|||
|
|
@ -76,10 +76,14 @@ class OverlayUtil {
|
|||
try {
|
||||
final LayerLinkAndKey layerLinkAndKey =
|
||||
MatrixState.pAnyState.layerLinkAndKey(transformTargetId);
|
||||
if (layerLinkAndKey.key.currentContext == null) {
|
||||
debugPrint("layerLinkAndKey.key.currentContext is null");
|
||||
return;
|
||||
}
|
||||
|
||||
final Offset cardOffset = _calculateCardOffset(
|
||||
cardSize: cardSize,
|
||||
transformTargetKey: layerLinkAndKey.key,
|
||||
transformTargetContext: layerLinkAndKey.key.currentContext!,
|
||||
);
|
||||
|
||||
final Widget child = Material(
|
||||
|
|
@ -112,16 +116,16 @@ class OverlayUtil {
|
|||
/// identified by [transformTargetKey]
|
||||
static Offset _calculateCardOffset({
|
||||
required Size cardSize,
|
||||
required LabeledGlobalKey transformTargetKey,
|
||||
required BuildContext transformTargetContext,
|
||||
final double minPadding = 10.0,
|
||||
}) {
|
||||
// debugger(when: kDebugMode);
|
||||
//Note: assumes overlay in chatview
|
||||
final OverlayConstraints constraints =
|
||||
ChatViewConstraints(transformTargetKey.currentContext!);
|
||||
ChatViewConstraints(transformTargetContext);
|
||||
|
||||
final RenderObject? targetRenderBox =
|
||||
transformTargetKey.currentContext!.findRenderObject();
|
||||
transformTargetContext.findRenderObject();
|
||||
if (targetRenderBox == null) return Offset.zero;
|
||||
final Offset transformTargetOffset =
|
||||
(targetRenderBox as RenderBox).localToGlobal(Offset.zero);
|
||||
|
|
|
|||
|
|
@ -5,10 +5,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: _flutterfire_internals
|
||||
sha256: "3ff770dfff04a67b0863dff205a0936784de1b87a5e99b11c693fc10e66a9ce3"
|
||||
sha256: "0816f12bbbd9e21f72ea8592b11bce4a628d4e5cb7a81ff9f1eee4f3dc23206e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.12"
|
||||
version: "1.3.37"
|
||||
async:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -61,50 +61,50 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: firebase_core
|
||||
sha256: c129209ba55f3d4272c89fb4a4994c15bea77fb6de63a82d45fb6bc5c94e4355
|
||||
sha256: fae4ab4317c2a7afb13d44ef1e3f9f28a630e10016bc5cfe761e8e6a0ed7816a
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.1"
|
||||
version: "3.1.0"
|
||||
firebase_core_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_core_platform_interface
|
||||
sha256: "5fab93f5b354648efa62e7cc829c90efb68c8796eecf87e0888cae2d5f3accd4"
|
||||
sha256: "1003a5a03a61fc9a22ef49f37cbcb9e46c86313a7b2e7029b9390cf8c6fc32cb"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.5.2"
|
||||
version: "5.1.0"
|
||||
firebase_core_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_core_web
|
||||
sha256: "18b35ce111b0a4266abf723c825bcf9d4e2519d13638cc7f06f2a8dd960c75bc"
|
||||
sha256: "6643fe3dbd021e6ccfb751f7882b39df355708afbdeb4130fc50f9305a9d1a3d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.0"
|
||||
version: "2.17.2"
|
||||
firebase_messaging:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: firebase_messaging
|
||||
sha256: dc010a6436333029fba858415fe65887c3fe44d8f6e6ea162bb8d3dd764fbcb6
|
||||
sha256: "2d0ea2234ce46030eda2e6922611115ce603adc614ebd8c00e7db06a8929efbb"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "14.2.1"
|
||||
version: "15.0.1"
|
||||
firebase_messaging_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_messaging_platform_interface
|
||||
sha256: abda2d766486096eb1c568c7b20aef46180596c8b0708190b929133ff03e0a8d
|
||||
sha256: c38c27f58cb6a88b8c145018d0567802376549c32a60098a13f3bdf3ddea326f
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.2.10"
|
||||
version: "4.5.39"
|
||||
firebase_messaging_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_messaging_web
|
||||
sha256: "7a0ce957bd2210e8636325152234728874dad039f1c7271ba1be5c752fdc5888"
|
||||
sha256: "8502849c2f232f7db338c052e045442207a0db82bd03ff14be3c80897dd8c26c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.2.11"
|
||||
version: "3.8.9"
|
||||
flutter:
|
||||
dependency: "direct main"
|
||||
description: flutter
|
||||
|
|
@ -120,46 +120,62 @@ packages:
|
|||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
js:
|
||||
leak_tracker:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: js
|
||||
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
|
||||
name: leak_tracker
|
||||
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.6.7"
|
||||
version: "10.0.4"
|
||||
leak_tracker_flutter_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker_flutter_testing
|
||||
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.3"
|
||||
leak_tracker_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker_testing
|
||||
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
matcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: matcher
|
||||
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
|
||||
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.12.16"
|
||||
version: "0.12.16+1"
|
||||
material_color_utilities:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: material_color_utilities
|
||||
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
|
||||
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.5.0"
|
||||
version: "0.8.0"
|
||||
meta:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: meta
|
||||
sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
|
||||
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.10.0"
|
||||
version: "1.12.0"
|
||||
path:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path
|
||||
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
|
||||
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.8.3"
|
||||
version: "1.9.0"
|
||||
pedantic:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
|
|
@ -225,10 +241,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: test_api
|
||||
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
|
||||
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.6.1"
|
||||
version: "0.7.0"
|
||||
vector_math:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -237,14 +253,22 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.4"
|
||||
vm_service:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vm_service
|
||||
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "14.2.1"
|
||||
web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web
|
||||
sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
|
||||
sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.3.0"
|
||||
version: "0.5.1"
|
||||
sdks:
|
||||
dart: ">=3.2.0-194.0.dev <4.0.0"
|
||||
flutter: ">=1.20.0"
|
||||
dart: ">=3.3.0 <4.0.0"
|
||||
flutter: ">=3.18.0-18.0.pre.54"
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ environment:
|
|||
flutter: ">=1.20.0"
|
||||
|
||||
dependencies:
|
||||
firebase_core: ^2.4.1
|
||||
firebase_messaging: ^14.2.1
|
||||
firebase_core: ^3.1.0
|
||||
firebase_messaging: ^15.0.1
|
||||
flutter:
|
||||
sdk: flutter
|
||||
|
||||
|
|
|
|||
80
pubspec.lock
80
pubspec.lock
|
|
@ -13,10 +13,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: _flutterfire_internals
|
||||
sha256: "3dee3db3468c5f4640a4e8aa9c1e22561c298976d8c39ed2fdd456a9a3db26e1"
|
||||
sha256: "0816f12bbbd9e21f72ea8592b11bce4a628d4e5cb7a81ff9f1eee4f3dc23206e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.32"
|
||||
version: "1.3.37"
|
||||
adaptive_dialog:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -460,74 +460,74 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: firebase_analytics
|
||||
sha256: c56bcc7abc6caacc33e8495bc604a5861d25ce371f1b06476ae226e7cbb21d4c
|
||||
sha256: "3363045ecc3141673262493eea4bd888c2c627c5e986b8766fa5f4bfafdbcdd8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "10.10.4"
|
||||
version: "11.0.1"
|
||||
firebase_analytics_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_analytics_platform_interface
|
||||
sha256: e8cdb845820eaa5f1d29de31a72aab8addbbffc6483f1e5123a9d0b611735285
|
||||
sha256: "5a2c14e18bf6c4423a6462113d85d3dee534a8bdd620391729e9570632d2aec4"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.10.5"
|
||||
version: "4.0.1"
|
||||
firebase_analytics_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_analytics_web
|
||||
sha256: e2fabebdf16bb99506a1e7e84f5effd6313c90678e6ea1876d301f057483a198
|
||||
sha256: db4bdb166aae9e5a0ce7791672401db139cd342369a92f7eaf020dbff9df2998
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.5.7+4"
|
||||
version: "0.5.7+9"
|
||||
firebase_core:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: firebase_core
|
||||
sha256: "4aef2a23d0f3265545807d68fbc2f76a6b994ca3c778d88453b99325abd63284"
|
||||
sha256: fae4ab4317c2a7afb13d44ef1e3f9f28a630e10016bc5cfe761e8e6a0ed7816a
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.30.1"
|
||||
version: "3.1.0"
|
||||
firebase_core_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_core_platform_interface
|
||||
sha256: c437ae5d17e6b5cc7981cf6fd458a5db4d12979905f9aafd1fea930428a9fe63
|
||||
sha256: "1003a5a03a61fc9a22ef49f37cbcb9e46c86313a7b2e7029b9390cf8c6fc32cb"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.0.0"
|
||||
version: "5.1.0"
|
||||
firebase_core_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_core_web
|
||||
sha256: "67f2fcc600fc78c2f731c370a3a5e6c87ee862e3a2fba6f951eca6d5dafe5c29"
|
||||
sha256: "6643fe3dbd021e6ccfb751f7882b39df355708afbdeb4130fc50f9305a9d1a3d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.16.0"
|
||||
version: "2.17.2"
|
||||
firebase_messaging:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: firebase_messaging
|
||||
sha256: "73a43445a7f8c6e6327f0ec3922b1c99a9f4a0e4896197bfe10a88259f775aad"
|
||||
sha256: "2d0ea2234ce46030eda2e6922611115ce603adc614ebd8c00e7db06a8929efbb"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "14.9.1"
|
||||
version: "15.0.1"
|
||||
firebase_messaging_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_messaging_platform_interface
|
||||
sha256: "675527aadccb679c9dfd43a4558690427123ac1e99f03eef5bbce9dc216edc91"
|
||||
sha256: c38c27f58cb6a88b8c145018d0567802376549c32a60098a13f3bdf3ddea326f
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.5.34"
|
||||
version: "4.5.39"
|
||||
firebase_messaging_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_messaging_web
|
||||
sha256: "66deff69307f54fc7a20732b4278af327ae378b86607d5ac877d8f2201fe881e"
|
||||
sha256: "8502849c2f232f7db338c052e045442207a0db82bd03ff14be3c80897dd8c26c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.8.4"
|
||||
version: "3.8.9"
|
||||
fixnum:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -975,6 +975,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.2"
|
||||
globbing:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: globbing
|
||||
sha256: "4f89cfaf6fa74c9c1740a96259da06bd45411ede56744e28017cc534a12b6e2d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
go_router:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -1167,6 +1175,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.3.8+1"
|
||||
injector:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: injector
|
||||
sha256: ed389bed5b48a699d5b9561c985023d0d5cc88dd5ff2237aadcce5a5ab433e4e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
integration_test:
|
||||
dependency: "direct dev"
|
||||
description: flutter
|
||||
|
|
@ -1749,6 +1765,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.0"
|
||||
properties:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: properties
|
||||
sha256: "333f427dd4ed07bdbe8c75b9ff864a1e70b5d7a8426a2e8bdd457b65ae5ac598"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
provider:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -1949,6 +1973,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.2.0"
|
||||
sentry_dart_plugin:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: sentry_dart_plugin
|
||||
sha256: e81fa3e0ffabd04fdcfbfecd6468d4a342f02ab33edca09708c61bcd2be42b7d
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.7.1"
|
||||
sentry_flutter:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -2234,6 +2266,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.0+1"
|
||||
system_info2:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: system_info2
|
||||
sha256: "65206bbef475217008b5827374767550a5420ce70a04d2d7e94d1d2253f3efc9"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.0"
|
||||
tar:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
|
|||
|
|
@ -103,9 +103,9 @@ dependencies:
|
|||
country_picker: ^2.0.25
|
||||
csv: ^6.0.0
|
||||
fl_chart: ^0.67.0
|
||||
firebase_analytics: ^10.10.2
|
||||
firebase_core: ^2.30.0
|
||||
firebase_messaging: ^14.8.2
|
||||
firebase_analytics: ^11.0.1
|
||||
firebase_core: ^3.1.0
|
||||
firebase_messaging: ^15.0.1
|
||||
flutter_dotenv: ^5.1.0
|
||||
fcm_shared_isolate:
|
||||
path: pangea_packages/fcm_shared_isolate
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue