flip axis on Linux

This commit is contained in:
Nick Fisher
2022-12-09 22:54:05 +08:00
parent 7ec4b3674c
commit ffe79373c0

View File

@@ -1,3 +1,6 @@
import 'dart:io';
import 'dart:math';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'dart:async'; import 'dart:async';
@@ -58,12 +61,13 @@ class _FilamentWidgetState extends State<FilamentWidget> {
@override @override
void initState() { void initState() {
_listener = widget.controller.onInitializationRequested.listen((_) { _listener = widget.controller.onInitializationRequested.listen((_) {
if(_ready) { if (_ready) {
return; return;
} }
WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { WidgetsBinding.instance.addPostFrameCallback((timeStamp) async {
var size = ((context.findRenderObject()) as RenderBox).size; var size = ((context.findRenderObject()) as RenderBox).size;
print("Requesting creation of Filament back-end texture/viewer for viewport size $size"); print(
"Requesting creation of Filament back-end texture/viewer for viewport size $size");
await widget.controller await widget.controller
.createTextureViewer(size.width.toInt(), size.height.toInt()); .createTextureViewer(size.width.toInt(), size.height.toInt());
print("Filament texture/viewer created."); print("Filament texture/viewer created.");
@@ -74,9 +78,7 @@ class _FilamentWidgetState extends State<FilamentWidget> {
_listener = null; _listener = null;
}); });
// we need to make sure a new frame is requested, otherwise the callback may not run // we need to make sure a new frame is requested, otherwise the callback may not run
setState(() { setState(() {});
});
}); });
super.initState(); super.initState();
@@ -92,14 +94,20 @@ class _FilamentWidgetState extends State<FilamentWidget> {
if (!_ready) { if (!_ready) {
return Container(); return Container();
} }
var texture = Texture(
textureId: widget.controller.textureId,
filterQuality: FilterQuality.none,
);
return ResizeObserver( return ResizeObserver(
onResized: (Size oldSize, Size newSize) async { onResized: (Size oldSize, Size newSize) async {
await widget.controller await widget.controller
.resize(newSize.width.toInt(), newSize.height.toInt()); .resize(newSize.width.toInt(), newSize.height.toInt());
}, },
child: Texture( child: Platform.isLinux
textureId: widget.controller.textureId, ? Transform(
filterQuality: FilterQuality.none, alignment: Alignment.center,
)); transform: Matrix4.rotationX(pi),
child: texture)
: texture);
} }
} }