From 390b3d063bc5081557de6b606a833ae006aae486 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Mon, 16 Oct 2023 15:08:23 +0800 Subject: [PATCH] don't use postFrameCallback in FilamentWidget resize --- lib/widgets/filament_widget.dart | 37 ++++++++++++++++---------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/lib/widgets/filament_widget.dart b/lib/widgets/filament_widget.dart index 61b93c66..8d9364d2 100644 --- a/lib/widgets/filament_widget.dart +++ b/lib/widgets/filament_widget.dart @@ -106,8 +106,7 @@ class _FilamentWidgetState extends State { print("Size after resuming : $size"); _height = size.height.ceil(); _width = size.width.ceil(); - await widget.controller - .createViewer(_width!, _height!); + await widget.controller.createViewer(_width!, _height!); print("Created viewer Size after resuming"); } } @@ -133,9 +132,8 @@ class _FilamentWidgetState extends State { _width = size.width.ceil(); _height = size.height.ceil(); try { - _textureDetails = await widget.controller - .createViewer(_width!, _height!); - + _textureDetails = + await widget.controller.createViewer(_width!, _height!); } catch (err) { setState(() { _error = err.toString(); @@ -169,7 +167,9 @@ class _FilamentWidgetState extends State { // if no texture ID is available, display the [initial] widget (solid red by default) late Widget content; - if ( _textureDetails == null || _textureDetails!.height != _height || _textureDetails!.width != _width) { + if (_textureDetails == null || + _textureDetails!.height != _height || + _textureDetails!.width != _width) { content = widget.initial ?? Container(color: Colors.red); } else { content = Texture( @@ -183,22 +183,21 @@ class _FilamentWidgetState extends State { // see [FilamentControllerFFI.resize] for an explanation of how we deal with resizing return ResizeObserver( onResized: (Size oldSize, Size newSize) async { - _resizeTimer?.cancel(); - WidgetsBinding.instance.addPostFrameCallback((_) { - _resizeTimer = Timer(const Duration(milliseconds:50), () async { - var newWidth = newSize.width.ceil(); - var newHeight = newSize.height.ceil(); - _textureDetails = await widget.controller - .resize(newWidth, newHeight); - WidgetsBinding.instance.addPostFrameCallback((_) { - setState(() { - _width = newWidth; - _height = newHeight; - }); + _resizeTimer = Timer(const Duration(milliseconds: 50), () async { + var newWidth = newSize.width.ceil(); + var newHeight = newSize.height.ceil(); + try { + _textureDetails = + await widget.controller.resize(newWidth, newHeight); + setState(() { + _width = newWidth; + _height = newHeight; }); - }); + } catch (err) { + print(err); + } }); }, child: Stack(children: [