@ -0,0 +1,33 @@
|
||||
// ignore_for_file: public_member_api_docs |
||||
import 'package:flutter/rendering.dart'; |
||||
import 'package:flutter/widgets.dart'; |
||||
|
||||
/// NOTE ref: https://github.com/flutter/flutter/issues/71687 & https://gist.github.com/matthew-carroll/65411529a5fafa1b527a25b7130187c6 |
||||
/// Same as `IntrinsicHeight` except that when this widget is instructed |
||||
/// to `computeDryLayout()`, it doesn't invoke that on its child, instead |
||||
/// it computes the child's intrinsic height. |
||||
/// |
||||
/// This widget is useful in situations where the `child` does not |
||||
/// support dry layout, e.g., `TextField` as of 01/02/2021. |
||||
class DryIntrinsicHeight extends SingleChildRenderObjectWidget { |
||||
const DryIntrinsicHeight({ |
||||
super.key, |
||||
super.child, |
||||
}); |
||||
|
||||
@override |
||||
RenderDryIntrinsicHeight createRenderObject(final BuildContext context) => RenderDryIntrinsicHeight(); |
||||
} |
||||
|
||||
class RenderDryIntrinsicHeight extends RenderIntrinsicHeight { |
||||
@override |
||||
Size computeDryLayout(final BoxConstraints constraints) { |
||||
if (child != null) { |
||||
final height = child!.computeMinIntrinsicHeight(constraints.maxWidth); |
||||
final width = child!.computeMinIntrinsicWidth(height); |
||||
return Size(width, height); |
||||
} else { |
||||
return Size.zero; |
||||
} |
||||
} |
||||
} |
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.4 KiB |