don't use resize callback on Windows and use ListenableBuilder for texture ID changes

don't use resize callback on Windows and use ListenableBuilder for texture ID changes
This commit is contained in:
Nick Fisher
2023-10-24 12:24:56 +11:00
parent 537f0e1c8e
commit 435ed7bee6

View File

@@ -87,6 +87,9 @@ class _FilamentWidgetState extends State<FilamentWidget> {
return ResizeObserver( return ResizeObserver(
onResized: (newSize) { onResized: (newSize) {
if(!Platform.isWindows) {
return;
}
WidgetsBinding.instance.addPostFrameCallback((timeStamp) { WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
setState(() { setState(() {
_width = newSize.width.ceil(); _width = newSize.width.ceil();
@@ -249,15 +252,17 @@ class _SizedFilamentWidgetState extends State<_SizedFilamentWidget> {
])); ]));
} }
if (widget.controller.textureDetails == null) { return ListenableBuilder(listenable: widget.controller.textureDetails, builder: (BuildContext ctx, Widget? wdgt) {
if (widget.controller.textureDetails.value == null) {
return Stack(children: [ return Stack(children: [
Positioned.fill(child: widget.initial ?? Container(color: Colors.red)) Positioned.fill(child: widget.initial ?? Container(color: Colors.red))
]); ]);
} }
// see [FilamentControllerFFI.resize] for an explanation of how we deal with resizing // see [FilamentControllerFFI.resize] for an explanation of how we deal with resizing
var texture = Texture( var texture = Texture(
key: ObjectKey("texture_${widget.controller.textureDetails!.textureId}"), key: ObjectKey("texture_${widget.controller.textureDetails.value!.textureId}"),
textureId: widget.controller.textureDetails!.textureId, textureId: widget.controller.textureDetails.value!.textureId,
filterQuality: FilterQuality.none, filterQuality: FilterQuality.none,
freeze: false, freeze: false,
); );
@@ -272,5 +277,6 @@ class _SizedFilamentWidgetState extends State<_SizedFilamentWidget> {
child: texture) child: texture)
: texture) : texture)
]); ]);
});
} }
} }