wrapInsetField method
Wraps a field with an inset neumorphic shell.
Implementation
Widget wrapInsetField({
required Widget child,
required bool focused,
bool hasError = false,
}) {
final radius = BorderRadius.circular(borderRadius);
if (hasError) {
return DecoratedBox(
decoration: BoxDecoration(
color: fillColor,
borderRadius: radius,
border: Border.all(
color: errorOutlineColor,
width: errorOutlineWidth,
),
),
child: child,
);
}
final frameWidth = focused ? focusedOutlineWidth : outlineWidth;
final darkColor = focused ? focusedOutlineColor : insetShadowColor!;
final lightColor = insetHighlightColor!;
final innerRadius = BorderRadius.circular(
(borderRadius - frameWidth).clamp(0, borderRadius),
);
return DecoratedBox(
decoration: BoxDecoration(
borderRadius: radius,
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [darkColor, lightColor],
),
),
child: Padding(
padding: EdgeInsets.all(frameWidth),
child: DecoratedBox(
decoration: BoxDecoration(
color: fillColor,
borderRadius: innerRadius,
),
child: ClipRRect(borderRadius: innerRadius, child: child),
),
),
);
}