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(
onResized: (newSize) {
if(!Platform.isWindows) {
return;
}
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
setState(() {
_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: [
Positioned.fill(child: widget.initial ?? Container(color: Colors.red))
]);
}
// see [FilamentControllerFFI.resize] for an explanation of how we deal with resizing
var texture = Texture(
key: ObjectKey("texture_${widget.controller.textureDetails!.textureId}"),
textureId: widget.controller.textureDetails!.textureId,
key: ObjectKey("texture_${widget.controller.textureDetails.value!.textureId}"),
textureId: widget.controller.textureDetails.value!.textureId,
filterQuality: FilterQuality.none,
freeze: false,
);
@@ -272,5 +277,6 @@ class _SizedFilamentWidgetState extends State<_SizedFilamentWidget> {
child: texture)
: texture)
]);
});
}
}