feat: add rendering check to ThermionWidget ticker
This commit is contained in:
@@ -12,11 +12,9 @@ import 'package:thermion_flutter_web/thermion_flutter_web_options.dart';
|
|||||||
import 'resize_observer.dart';
|
import 'resize_observer.dart';
|
||||||
|
|
||||||
class ThermionWidget extends StatefulWidget {
|
class ThermionWidget extends StatefulWidget {
|
||||||
|
|
||||||
final ThermionViewer viewer;
|
final ThermionViewer viewer;
|
||||||
final ThermionFlutterOptions? options;
|
final ThermionFlutterOptions? options;
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// The content to render before the texture widget is available.
|
/// The content to render before the texture widget is available.
|
||||||
/// The default is a solid red Container, intentionally chosen to make it clear that there will be at least one frame where the Texture widget is not being rendered.
|
/// The default is a solid red Container, intentionally chosen to make it clear that there will be at least one frame where the Texture widget is not being rendered.
|
||||||
@@ -63,13 +61,19 @@ class _ThermionWidgetState extends State<ThermionWidget> {
|
|||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
||||||
void _requestFrame() {
|
|
||||||
WidgetsBinding.instance.scheduleFrameCallback((d) {
|
|
||||||
|
|
||||||
widget.viewer.requestFrame();
|
bool _rendering = false;
|
||||||
_requestFrame();
|
|
||||||
});
|
void _requestFrame() {
|
||||||
}
|
WidgetsBinding.instance.scheduleFrameCallback((d) async {
|
||||||
|
if (!_rendering) {
|
||||||
|
_rendering = true;
|
||||||
|
await widget.viewer.requestFrame();
|
||||||
|
_rendering = false;
|
||||||
|
}
|
||||||
|
_requestFrame();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
bool _resizing = false;
|
bool _resizing = false;
|
||||||
Timer? _resizeTimer;
|
Timer? _resizeTimer;
|
||||||
|
|||||||
Reference in New Issue
Block a user