use new initialization methods in FilamentWidget

This commit is contained in:
Nick Fisher
2023-09-14 09:51:33 +08:00
parent 9ae30cbf46
commit bd7de45103

View File

@@ -50,8 +50,10 @@ class _RenderResizeObserver extends RenderProxyBox {
class FilamentWidget extends StatefulWidget { class FilamentWidget extends StatefulWidget {
final FilamentController controller; final FilamentController controller;
final void Function()? onResize;
const FilamentWidget({Key? key, required this.controller}) : super(key: key); const FilamentWidget({Key? key, required this.controller, this.onResize})
: super(key: key);
@override @override
_FilamentWidgetState createState() => _FilamentWidgetState(); _FilamentWidgetState createState() => _FilamentWidgetState();
@@ -74,9 +76,11 @@ class _FilamentWidgetState extends State<FilamentWidget> {
break; break;
case AppLifecycleState.hidden: case AppLifecycleState.hidden:
print("Hidden"); print("Hidden");
_textureId = null; if (Platform.isIOS) {
await widget.controller.destroyViewer(); _textureId = null;
await widget.controller.destroyTexture(); await widget.controller.destroyViewer();
await widget.controller.destroyTexture();
}
break; break;
case AppLifecycleState.inactive: case AppLifecycleState.inactive:
print("Inactive"); print("Inactive");
@@ -105,11 +109,12 @@ class _FilamentWidgetState extends State<FilamentWidget> {
WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { WidgetsBinding.instance.addPostFrameCallback((timeStamp) async {
var size = ((context.findRenderObject()) as RenderBox).size; var size = ((context.findRenderObject()) as RenderBox).size;
widget.controller.setInitialSize(size.width.toInt(), size.height.toInt()); widget.controller.createViewer(size.width.toInt(), size.height.toInt());
}); });
_textureIdListener = widget.controller.textureId.listen((int? textureId) { _textureIdListener = widget.controller.textureId.listen((int? textureId) {
print("Set texture ID to $textureId"); var size = ((context.findRenderObject()) as RenderBox).size;
print("Set texture ID to $textureId, current size is $size");
setState(() { setState(() {
_textureId = textureId; _textureId = textureId;
}); });
@@ -129,7 +134,7 @@ class _FilamentWidgetState extends State<FilamentWidget> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return LayoutBuilder(builder: ((context, constraints) { return LayoutBuilder(builder: ((context, constraints) {
if (_textureId == null) { if (_textureId == null) {
return Container(color: Colors.transparent); return Container(color: Colors.red);
} }
var texture = Texture( var texture = Texture(
@@ -152,6 +157,7 @@ class _FilamentWidgetState extends State<FilamentWidget> {
WidgetsBinding.instance.addPostFrameCallback((_) async { WidgetsBinding.instance.addPostFrameCallback((_) async {
setState(() { setState(() {
_resizing = false; _resizing = false;
widget.onResize?.call();
}); });
}); });
}); });