fix: labelText do campo de data foi alterado para representar melhor o fluxo

This commit is contained in:
J. A. Messias 2024-11-01 08:20:40 -03:00
parent 3dadb48fe8
commit 1aab95869c
3 changed files with 31 additions and 79 deletions

View File

@ -1 +0,0 @@

View File

@ -281,7 +281,10 @@ class _ScheduleProvisionalVisitPageWidgetState extends State<ScheduleProvisional
obscureText: false, obscureText: false,
decoration: InputDecoration( decoration: InputDecoration(
isDense: true, isDense: true,
labelText: FFLocalizations.of(context).getText('8zgsw5so'), labelText: FFLocalizations.of(context).getVariableText(
ptText: "Data de Validade da Visita",
enText: "Visit Validity Date",
),
labelStyle: FlutterFlowTheme.of(context).bodyMedium.override( labelStyle: FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily,
letterSpacing: 0.0, letterSpacing: 0.0,

View File

@ -24,7 +24,6 @@ export 'dart:typed_data' show Uint8List;
export 'package:intl/intl.dart'; export 'package:intl/intl.dart';
export 'package:page_transition/page_transition.dart'; export 'package:page_transition/page_transition.dart';
export '/app_state.dart';
export 'custom_icons.dart' show FFIcons; export 'custom_icons.dart' show FFIcons;
export 'flutter_flow_model.dart'; export 'flutter_flow_model.dart';
export 'internationalization.dart' show FFLocalizations; export 'internationalization.dart' show FFLocalizations;
@ -33,8 +32,7 @@ export 'lat_lng.dart';
export 'place.dart'; export 'place.dart';
export 'uploaded_file.dart'; export 'uploaded_file.dart';
T valueOrDefault<T>(T? value, T defaultValue) => T valueOrDefault<T>(T? value, T defaultValue) => (value is String && value.isEmpty) || value == null ? defaultValue : value;
(value is String && value.isEmpty) || value == null ? defaultValue : value;
void _setTimeagoLocales() { void _setTimeagoLocales() {
timeago.setLocaleMessages('pt', timeago.PtBrMessages()); timeago.setLocaleMessages('pt', timeago.PtBrMessages());
@ -68,8 +66,7 @@ Theme wrapInMaterialDatePickerTheme(
required double iconSize, required double iconSize,
}) { }) {
final baseTheme = Theme.of(context); final baseTheme = Theme.of(context);
final dateTimeMaterialStateForegroundColor = final dateTimeMaterialStateForegroundColor = WidgetStateProperty.resolveWith((states) {
WidgetStateProperty.resolveWith((states) {
if (states.contains(WidgetState.disabled)) { if (states.contains(WidgetState.disabled)) {
return pickerForegroundColor.withOpacity(0.60); return pickerForegroundColor.withOpacity(0.60);
} }
@ -82,8 +79,7 @@ Theme wrapInMaterialDatePickerTheme(
return null; return null;
}); });
final dateTimeMaterialStateBackgroundColor = final dateTimeMaterialStateBackgroundColor = WidgetStateProperty.resolveWith((states) {
WidgetStateProperty.resolveWith((states) {
if (states.contains(WidgetState.selected)) { if (states.contains(WidgetState.selected)) {
return selectedDateTimeBackgroundColor; return selectedDateTimeBackgroundColor;
} }
@ -152,8 +148,7 @@ Theme wrapInMaterialDatePickerTheme(
if (states.contains(WidgetState.hovered)) { if (states.contains(WidgetState.hovered)) {
return actionButtonForegroundColor.withOpacity(0.04); return actionButtonForegroundColor.withOpacity(0.04);
} }
if (states.contains(WidgetState.focused) || if (states.contains(WidgetState.focused) || states.contains(WidgetState.pressed)) {
states.contains(WidgetState.pressed)) {
return actionButtonForegroundColor.withOpacity(0.12); return actionButtonForegroundColor.withOpacity(0.12);
} }
return null; return null;
@ -252,8 +247,7 @@ Theme wrapInMaterialTimePickerTheme(
if (states.contains(WidgetState.hovered)) { if (states.contains(WidgetState.hovered)) {
return actionButtonForegroundColor.withOpacity(0.04); return actionButtonForegroundColor.withOpacity(0.04);
} }
if (states.contains(WidgetState.focused) || if (states.contains(WidgetState.focused) || states.contains(WidgetState.pressed)) {
states.contains(WidgetState.pressed)) {
return actionButtonForegroundColor.withOpacity(0.12); return actionButtonForegroundColor.withOpacity(0.12);
} }
return null; return null;
@ -264,21 +258,12 @@ Theme wrapInMaterialTimePickerTheme(
backgroundColor: pickerBackgroundColor, backgroundColor: pickerBackgroundColor,
hourMinuteTextColor: pickerForegroundColor, hourMinuteTextColor: pickerForegroundColor,
dialHandColor: selectedDateTimeBackgroundColor, dialHandColor: selectedDateTimeBackgroundColor,
dialTextColor: WidgetStateColor.resolveWith((states) => dialTextColor: WidgetStateColor.resolveWith((states) => states.contains(WidgetState.selected) ? selectedDateTimeForegroundColor : pickerDialForegroundColor),
states.contains(WidgetState.selected)
? selectedDateTimeForegroundColor
: pickerDialForegroundColor),
dayPeriodBorderSide: BorderSide( dayPeriodBorderSide: BorderSide(
color: pickerForegroundColor, color: pickerForegroundColor,
), ),
dayPeriodTextColor: WidgetStateColor.resolveWith((states) => dayPeriodTextColor: WidgetStateColor.resolveWith((states) => states.contains(WidgetState.selected) ? selectedDateTimeForegroundColor : pickerForegroundColor),
states.contains(WidgetState.selected) dayPeriodColor: WidgetStateColor.resolveWith((states) => states.contains(WidgetState.selected) ? selectedDateTimeBackgroundColor : Colors.transparent),
? selectedDateTimeForegroundColor
: pickerForegroundColor),
dayPeriodColor: WidgetStateColor.resolveWith((states) =>
states.contains(WidgetState.selected)
? selectedDateTimeBackgroundColor
: Colors.transparent),
entryModeIconColor: pickerForegroundColor, entryModeIconColor: pickerForegroundColor,
), ),
), ),
@ -361,8 +346,7 @@ String formatNumber(
break; break;
case FormatType.custom: case FormatType.custom:
final hasLocale = locale != null && locale.isNotEmpty; final hasLocale = locale != null && locale.isNotEmpty;
formattedValue = formattedValue = NumberFormat(format, hasLocale ? locale : null).format(value);
NumberFormat(format, hasLocale ? locale : null).format(value);
} }
if (formattedValue.isEmpty) { if (formattedValue.isEmpty) {
@ -370,9 +354,7 @@ String formatNumber(
} }
if (currency != null) { if (currency != null) {
final currencySymbol = currency.isNotEmpty final currencySymbol = currency.isNotEmpty ? currency : NumberFormat.simpleCurrency().format(0.0).substring(0, 1);
? currency
: NumberFormat.simpleCurrency().format(0.0).substring(0, 1);
formattedValue = '$currencySymbol$formattedValue'; formattedValue = '$currencySymbol$formattedValue';
} }
@ -430,9 +412,7 @@ dynamic getJsonField(
} }
final value = field.first.value; final value = field.first.value;
if (isForList) { if (isForList) {
return value is! Iterable return value is! Iterable ? [value] : (value is List ? value : value.toList());
? [value]
: (value is List ? value : value.toList());
} }
return value; return value;
} }
@ -453,8 +433,7 @@ bool get isWeb => kIsWeb;
const kBreakpointSmall = 479.0; const kBreakpointSmall = 479.0;
const kBreakpointMedium = 767.0; const kBreakpointMedium = 767.0;
const kBreakpointLarge = 991.0; const kBreakpointLarge = 991.0;
bool isMobileWidth(BuildContext context) => bool isMobileWidth(BuildContext context) => MediaQuery.sizeOf(context).width < kBreakpointSmall;
MediaQuery.sizeOf(context).width < kBreakpointSmall;
bool responsiveVisibility({ bool responsiveVisibility({
required BuildContext context, required BuildContext context,
bool phone = true, bool phone = true,
@ -478,8 +457,7 @@ const kTextValidatorUsernameRegex = r'^[a-zA-Z][a-zA-Z0-9_-]{2,16}$';
// https://stackoverflow.com/a/201378 // https://stackoverflow.com/a/201378
const kTextValidatorEmailRegex = const kTextValidatorEmailRegex =
"^(?:[a-zA-Z0-9!#\$%&\'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#\$%&\'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?|\\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-zA-Z0-9-]*[a-zA-Z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])\$"; "^(?:[a-zA-Z0-9!#\$%&\'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#\$%&\'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?|\\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-zA-Z0-9-]*[a-zA-Z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])\$";
const kTextValidatorWebsiteRegex = const kTextValidatorWebsiteRegex = r'(https?:\/\/)?(www\.)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,10}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)|(https?:\/\/)?(www\.)?(?!ww)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,10}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)';
r'(https?:\/\/)?(www\.)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,10}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)|(https?:\/\/)?(www\.)?(?!ww)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,10}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)';
extension FFTextEditingControllerExt on TextEditingController? { extension FFTextEditingControllerExt on TextEditingController? {
String get text => this == null ? '' : this!.text; String get text => this == null ? '' : this!.text;
@ -487,28 +465,20 @@ extension FFTextEditingControllerExt on TextEditingController? {
} }
extension IterableExt<T> on Iterable<T> { extension IterableExt<T> on Iterable<T> {
List<T> sortedList<S extends Comparable>( List<T> sortedList<S extends Comparable>({S Function(T)? keyOf, bool desc = false}) {
{S Function(T)? keyOf, bool desc = false}) { final sortedAscending = toList()..sort(keyOf == null ? null : ((a, b) => keyOf(a).compareTo(keyOf(b))));
final sortedAscending = toList()
..sort(keyOf == null ? null : ((a, b) => keyOf(a).compareTo(keyOf(b))));
if (desc) { if (desc) {
return sortedAscending.reversed.toList(); return sortedAscending.reversed.toList();
} }
return sortedAscending; return sortedAscending;
} }
List<S> mapIndexed<S>(S Function(int, T) func) => toList() List<S> mapIndexed<S>(S Function(int, T) func) => toList().asMap().map((index, value) => MapEntry(index, func(index, value))).values.toList();
.asMap()
.map((index, value) => MapEntry(index, func(index, value)))
.values
.toList();
} }
void setAppLanguage(BuildContext context, String language) => void setAppLanguage(BuildContext context, String language) => App.of(context).setLocale(language);
App.of(context).setLocale(language);
void setDarkModeSetting(BuildContext context, ThemeMode themeMode) => void setDarkModeSetting(BuildContext context, ThemeMode themeMode) => App.of(context).setThemeMode(themeMode);
App.of(context).setThemeMode(themeMode);
void showSnackbar( void showSnackbar(
BuildContext context, BuildContext context,
@ -542,9 +512,7 @@ void showSnackbar(
], ],
), ),
duration: Duration(seconds: duration), duration: Duration(seconds: duration),
backgroundColor: error backgroundColor: error ? FlutterFlowTheme.of(context).error : FlutterFlowTheme.of(context).success,
? FlutterFlowTheme.of(context).error
: FlutterFlowTheme.of(context).success,
behavior: SnackBarBehavior.floating, behavior: SnackBarBehavior.floating,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30), borderRadius: BorderRadius.circular(30),
@ -553,8 +521,7 @@ void showSnackbar(
); );
} }
void showAlertDialog(BuildContext context, String title, String content, void showAlertDialog(BuildContext context, String title, String content, Future<void> Function() action) {
Future<void> Function() action) {
showDialog( showDialog(
context: context, context: context,
builder: (context) { builder: (context) {
@ -619,10 +586,7 @@ void showAlertDialog(BuildContext context, String title, String content,
} }
extension FFStringExt on String { extension FFStringExt on String {
String maybeHandleOverflow({int? maxChars, String replacement = ''}) => String maybeHandleOverflow({int? maxChars, String replacement = ''}) => maxChars != null && length > maxChars ? replaceRange(maxChars, null, replacement) : this;
maxChars != null && length > maxChars
? replaceRange(maxChars, null, replacement)
: this;
} }
extension ListFilterExt<T> on Iterable<T?> { extension ListFilterExt<T> on Iterable<T?> {
@ -631,40 +595,26 @@ extension ListFilterExt<T> on Iterable<T?> {
extension MapFilterExtensions<T> on Map<String, T?> { extension MapFilterExtensions<T> on Map<String, T?> {
Map<String, T> get withoutNulls => Map.fromEntries( Map<String, T> get withoutNulls => Map.fromEntries(
entries entries.where((e) => e.value != null).map((e) => MapEntry(e.key, e.value as T)),
.where((e) => e.value != null)
.map((e) => MapEntry(e.key, e.value as T)),
); );
} }
extension MapListContainsExt on List<dynamic> { extension MapListContainsExt on List<dynamic> {
bool containsMap(dynamic map) => map is Map bool containsMap(dynamic map) => map is Map ? any((e) => e is Map && const DeepCollectionEquality().equals(e, map)) : contains(map);
? any((e) => e is Map && const DeepCollectionEquality().equals(e, map))
: contains(map);
} }
extension ListDivideExt<T extends Widget> on Iterable<T> { extension ListDivideExt<T extends Widget> on Iterable<T> {
Iterable<MapEntry<int, Widget>> get enumerate => toList().asMap().entries; Iterable<MapEntry<int, Widget>> get enumerate => toList().asMap().entries;
List<Widget> divide(Widget t, {bool Function(int)? filterFn}) => isEmpty List<Widget> divide(Widget t, {bool Function(int)? filterFn}) => isEmpty ? [] : (enumerate.map((e) => [e.value, if (filterFn == null || filterFn(e.key)) t]).expand((i) => i).toList()..removeLast());
? []
: (enumerate
.map((e) => [e.value, if (filterFn == null || filterFn(e.key)) t])
.expand((i) => i)
.toList()
..removeLast());
List<Widget> around(Widget t) => addToStart(t).addToEnd(t); List<Widget> around(Widget t) => addToStart(t).addToEnd(t);
List<Widget> addToStart(Widget t) => List<Widget> addToStart(Widget t) => enumerate.map((e) => e.value).toList()..insert(0, t);
enumerate.map((e) => e.value).toList()..insert(0, t);
List<Widget> addToEnd(Widget t) => List<Widget> addToEnd(Widget t) => enumerate.map((e) => e.value).toList()..add(t);
enumerate.map((e) => e.value).toList()..add(t);
List<Padding> paddingTopEach(double val) => List<Padding> paddingTopEach(double val) => map((w) => Padding(padding: EdgeInsets.only(top: val), child: w)).toList();
map((w) => Padding(padding: EdgeInsets.only(top: val), child: w))
.toList();
} }
extension StatefulWidgetExtensions on State<StatefulWidget> { extension StatefulWidgetExtensions on State<StatefulWidget> {