initial commit: push everything
This commit is contained in:
111
lib/views/helpers/constants/Font_constant.dart
Normal file
111
lib/views/helpers/constants/Font_constant.dart
Normal file
@@ -0,0 +1,111 @@
|
||||
// ignore: file_names
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class FontConstants {
|
||||
static String fontFamily = 'Proxima Nova';
|
||||
|
||||
// Base screen width for scaling (iPhone standard: 375)
|
||||
static const double _baseWidth = 375.0;
|
||||
|
||||
// Base font sizes (for baseWidth = 375)
|
||||
static const double _baseExtraSmall = 10.0;
|
||||
static const double _baseSmall = 12.0;
|
||||
static const double _baseMedium = 14.0;
|
||||
static const double _baseRegular = 16.0;
|
||||
static const double _baseLarge = 20.0;
|
||||
static const double _baseXLarge = 21.0;
|
||||
static const double _baseXXLarge = 22.0;
|
||||
static const double _baseXXXLarge = 24.0;
|
||||
static const double _baseHuge = 30.0;
|
||||
|
||||
/// Get fixed font size (no width scaling) so small & large phones look same.
|
||||
static double getResponsiveFontSize(BuildContext context, double baseSize) {
|
||||
return baseSize;
|
||||
}
|
||||
|
||||
/// Extra Small Text (10px base) - For labels, captions
|
||||
static double extraSmall(BuildContext context) =>
|
||||
getResponsiveFontSize(context, _baseExtraSmall);
|
||||
|
||||
/// Small Text (12px base) - For small labels, timestamps
|
||||
static double small(BuildContext context) =>
|
||||
getResponsiveFontSize(context, _baseSmall);
|
||||
|
||||
/// Medium Text (14px base) - For body text, descriptions
|
||||
static double medium(BuildContext context) =>
|
||||
getResponsiveFontSize(context, _baseMedium);
|
||||
|
||||
/// Regular Text (16px base) - Standard body text, most common
|
||||
static double regular(BuildContext context) =>
|
||||
getResponsiveFontSize(context, _baseRegular);
|
||||
|
||||
/// Large Text (18px base) - For subheadings, important text
|
||||
static double large(BuildContext context) =>
|
||||
getResponsiveFontSize(context, _baseLarge);
|
||||
|
||||
/// Extra Large Text (20px base) - For headings, titles
|
||||
static double xLarge(BuildContext context) =>
|
||||
getResponsiveFontSize(context, _baseXLarge);
|
||||
|
||||
/// 2X Large Text (22px base) - For main headings
|
||||
static double xxLarge(BuildContext context) =>
|
||||
getResponsiveFontSize(context, _baseXXLarge);
|
||||
|
||||
/// 3X Large Text (24px base) - For prominent headings
|
||||
static double xxxLarge(BuildContext context) =>
|
||||
getResponsiveFontSize(context, _baseXXXLarge);
|
||||
|
||||
/// Huge Text (26px base) - For hero text, very prominent headings
|
||||
static double huge(BuildContext context) =>
|
||||
getResponsiveFontSize(context, _baseHuge);
|
||||
}
|
||||
|
||||
class ReusableTextWidget extends StatelessWidget {
|
||||
final String text;
|
||||
final double? fontSize;
|
||||
final double? textHeight;
|
||||
final String? fontFamily;
|
||||
final FontWeight? fontWeight;
|
||||
final FontStyle? fontStyle;
|
||||
final Color? color;
|
||||
final TextAlign? textAlign;
|
||||
final int? maxLines;
|
||||
final TextDecoration? isUnderText;
|
||||
|
||||
const ReusableTextWidget({
|
||||
super.key,
|
||||
required this.text,
|
||||
this.fontSize,
|
||||
this.textHeight,
|
||||
this.fontFamily,
|
||||
this.fontWeight,
|
||||
this.fontStyle,
|
||||
this.color,
|
||||
this.textAlign,
|
||||
this.maxLines,
|
||||
this.isUnderText,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Text(
|
||||
text,
|
||||
softWrap: true,
|
||||
style: TextStyle(
|
||||
fontSize: fontSize ?? FontConstants.medium(context),
|
||||
decoration: isUnderText,
|
||||
fontFamily: fontFamily ?? FontConstants.fontFamily,
|
||||
decorationColor: color,
|
||||
fontWeight: fontWeight ?? FontWeight.normal,
|
||||
fontStyle: fontStyle ?? FontStyle.normal,
|
||||
color: color ?? Colors.grey.shade900,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
decorationStyle: TextDecorationStyle.solid,
|
||||
decorationThickness: 1,
|
||||
height: textHeight,
|
||||
),
|
||||
maxLines: maxLines,
|
||||
textAlign: textAlign ?? TextAlign.start,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user