Files
Edouard Marquez a6569866d4 feat: Upgrade the Flutter version to 3.24 (#5613)
* Let's migrate the app to Flutter 3.24

* `openfoodfacts_flutter_lints` from the `main` branch

* A fix for `/// For the world view`
2024-09-26 16:48:01 +02:00

48 lines
1.0 KiB
Dart

import 'package:flutter/rendering.dart';
import 'package:flutter/widgets.dart';
class MeasureSize extends SingleChildRenderObjectWidget {
const MeasureSize({
super.key,
required this.onChange,
required Widget super.child,
});
final OnWidgetSizeChange onChange;
@override
RenderObject createRenderObject(BuildContext context) {
return MeasureSizeRenderObject(onChange);
}
@override
void updateRenderObject(
BuildContext context,
covariant MeasureSizeRenderObject renderObject,
) {
renderObject.onChange = onChange;
}
}
class MeasureSizeRenderObject extends RenderProxyBox {
MeasureSizeRenderObject(this.onChange);
OnWidgetSizeChange onChange;
Size? oldSize;
@override
void performLayout() {
super.performLayout();
final Size newSize = child!.size;
if (oldSize != newSize) {
oldSize = newSize;
WidgetsBinding.instance.addPostFrameCallback((_) {
onChange(newSize);
});
}
}
}
typedef OnWidgetSizeChange = void Function(Size size);