textField static method
Implementation
static String textField() => r'''
import 'package:flutter/material.dart';
import '../styles/design_style_config.dart';
import '../tokens/app_colors.dart';
import '../tokens/app_radius.dart';
import '../tokens/app_spacing.dart';
import 'app_surface.dart';
class AppTextField extends StatelessWidget {
const AppTextField({
super.key,
this.controller,
this.label,
this.hint,
this.prefix,
this.suffix,
this.errorText,
this.enabled = true,
this.obscureText = false,
this.keyboardType,
this.onChanged,
this.focusNode,
});
final TextEditingController? controller;
final String? label;
final String? hint;
final Widget? prefix;
final Widget? suffix;
final String? errorText;
final bool enabled;
final bool obscureText;
final TextInputType? keyboardType;
final ValueChanged<String>? onChanged;
final FocusNode? focusNode;
@override
Widget build(BuildContext context) {
final isDark = Theme.of(context).brightness == Brightness.dark;
const radius = AppStyleConfig.usesHardOffsetShadow
? AppRadius.none
: AppRadius.md;
final field = TextField(
controller: controller,
focusNode: focusNode,
enabled: enabled,
obscureText: obscureText,
keyboardType: keyboardType,
onChanged: onChanged,
style: Theme.of(context).textTheme.bodyMedium,
decoration: InputDecoration(
labelText: label,
hintText: hint,
prefixIcon: prefix,
suffixIcon: suffix,
errorText: errorText,
filled: true,
fillColor: Colors.transparent,
border: InputBorder.none,
),
);
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppSurface(
depth: enabled ? AppSurfaceDepth.inset : AppSurfaceDepth.flat,
radius: radius,
padding: const EdgeInsets.symmetric(horizontal: AppSpacing.sm),
child: field,
),
if (errorText != null) ...<Widget>[
const SizedBox(height: AppSpacing.xs),
Row(
children: <Widget>[
Icon(
Icons.error_outline,
size: 16,
color: isDark ? AppColorsDark.error : AppColors.error,
),
const SizedBox(width: AppSpacing.xs),
Expanded(
child: Text(
errorText!,
style: TextStyle(
color: isDark ? AppColorsDark.error : AppColors.error,
),
),
),
],
),
],
],
);
}
}
''';