update drawer and onPeopleInThePropertyWidget

This commit is contained in:
FlutterFlow 2024-06-13 11:26:11 +00:00
parent fc782cfd8d
commit 4d5b71e84f
17 changed files with 763 additions and 1154 deletions

View File

@ -44,8 +44,8 @@
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
6436409A27A31CDE00820AF7 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/InfoPlist.strings; sourceTree = "<group>"; };
6436409E27A31CD600820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
6436409E27A31CD500820AF7 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/InfoPlist.strings; sourceTree = "<group>"; };
6436409527A31CD900820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
/* End PBXFileReference section */
@ -225,8 +225,8 @@
6436409C27A31CD800820AF7 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
6436409A27A31CDE00820AF7 /* pt */,
6436409E27A31CD600820AF7 /* en */,
6436409E27A31CD500820AF7 /* pt */,
6436409527A31CD900820AF7 /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";

View File

@ -51,7 +51,7 @@ Future repeatVisitScheduleAction(
'visitorJsonList': serializeParam(
visitorJsonList,
ParamType.JSON,
true,
isList: true,
),
}.withoutNulls,
extra: <String, dynamic>{

View File

@ -16,12 +16,14 @@ class ActionStruct extends BaseStruct {
String? _title;
String get title => _title ?? '';
set title(String? val) => _title = val;
bool hasTitle() => _title != null;
// "icon" field.
String? _icon;
String get icon => _icon ?? '';
set icon(String? val) => _icon = val;
bool hasIcon() => _icon != null;
static ActionStruct fromMap(Map<String, dynamic> data) => ActionStruct(

View File

@ -18,18 +18,21 @@ class DeviceStruct extends BaseStruct {
String? _devUUID;
String get devUUID => _devUUID ?? '';
set devUUID(String? val) => _devUUID = val;
bool hasDevUUID() => _devUUID != null;
// "version" field.
String? _version;
String get version => _version ?? '';
set version(String? val) => _version = val;
bool hasVersion() => _version != null;
// "description" field.
String? _description;
String get description => _description ?? '';
set description(String? val) => _description = val;
bool hasDescription() => _description != null;
static DeviceStruct fromMap(Map<String, dynamic> data) => DeviceStruct(

View File

@ -890,7 +890,7 @@ class _ViewVisitDetailWidgetState extends State<ViewVisitDetailWidget> {
'visitorJsonList': serializeParam(
widget.visitorJsonList,
ParamType.JSON,
true,
isList: true,
),
}.withoutNulls,
);

View File

@ -95,6 +95,9 @@ class _VisitorSearchModalTemplateComponentWidgetState
_model.textController.text,
'69696777',
);
_model.textController?.selection =
TextSelection.collapsed(
offset: _model.textController!.text.length);
});
_model.getVisitorByDoc =
await PhpGroup.getVisitorByDocCall.call(

View File

@ -1,341 +0,0 @@
import 'dart:math' as math;
import 'package:data_table_2/data_table_2.dart';
import 'package:flutter/material.dart';
export 'package:data_table_2/data_table_2.dart' show DataColumn2;
const _kDataTableHorizontalMargin = 48.0;
const kDefaultColumnSpacing = 56.0;
const _kMinRowsPerPage = 5;
typedef ColumnsBuilder<T> = List<DataColumn> Function(void Function(int, bool));
typedef DataRowBuilder<T> = DataRow? Function(
T, int, bool, void Function(bool?)?);
class FlutterFlowDataTableController<T> extends DataTableSource {
FlutterFlowDataTableController({
List<T>? initialData,
int? numRows,
PaginatorController? paginatorController,
bool selectable = false,
}) {
data = initialData?.toList() ?? [];
numRows = numRows;
this.paginatorController = paginatorController ?? PaginatorController();
_selectable = selectable;
}
DataRowBuilder<T>? _dataRowBuilder;
late PaginatorController paginatorController;
List<T> data = [];
int? _numRows;
List<T> get selectedData =>
selectedRows.where((i) => i < data.length).map(data.elementAt).toList();
bool _selectable = false;
final Set<int> selectedRows = {};
int rowsPerPage = defaultRowsPerPage;
int? sortColumnIndex;
bool sortAscending = true;
void init({
DataRowBuilder<T>? dataRowBuilder,
bool? selectable,
List<T>? initialData,
int? initialNumRows,
}) {
_dataRowBuilder = dataRowBuilder ?? _dataRowBuilder;
_selectable = selectable ?? _selectable;
data = initialData?.toList() ?? data;
_numRows = initialNumRows;
}
void updateData({
List<T>? data,
int? numRows,
bool notify = true,
}) {
this.data = data?.toList() ?? this.data;
_numRows = numRows ?? _numRows;
if (notify) {
notifyListeners();
}
}
void updateSort({
required int columnIndex,
required bool ascending,
Function(int, bool)? onSortChanged,
}) {
sortColumnIndex = columnIndex;
sortAscending = ascending;
if (onSortChanged != null) {
onSortChanged(columnIndex, ascending);
}
notifyListeners();
}
@override
DataRow? getRow(int index) {
final row = data.elementAtOrNull(index);
return _dataRowBuilder != null && row != null
? _dataRowBuilder!(
row,
index,
selectedRows.contains(index),
_selectable
? (selected) {
if (selected == null) {
return;
}
selected
? selectedRows.add(index)
: selectedRows.remove(index);
notifyListeners();
}
: null,
)
: null;
}
@override
bool get isRowCountApproximate => false;
@override
int get rowCount => _numRows ?? data.length;
@override
int get selectedRowCount => selectedRows.length;
}
class FlutterFlowDataTable<T> extends StatefulWidget {
const FlutterFlowDataTable({
super.key,
required this.controller,
required this.data,
this.numRows,
required this.columnsBuilder,
required this.dataRowBuilder,
this.emptyBuilder,
this.onPageChanged,
this.onSortChanged,
this.onRowsPerPageChanged,
this.paginated = true,
this.selectable = false,
this.hidePaginator = false,
this.showFirstLastButtons = false,
this.width,
this.height,
this.minWidth,
this.headingRowHeight = 56,
this.dataRowHeight = kMinInteractiveDimension,
this.columnSpacing = kDefaultColumnSpacing,
this.headingRowColor,
this.sortIconColor,
this.borderRadius,
this.addHorizontalDivider = true,
this.addTopAndBottomDivider = false,
this.hideDefaultHorizontalDivider = false,
this.addVerticalDivider = false,
this.horizontalDividerColor,
this.horizontalDividerThickness,
this.verticalDividerColor,
this.verticalDividerThickness,
this.checkboxUnselectedFillColor,
this.checkboxSelectedFillColor,
this.checkboxUnselectedBorderColor,
this.checkboxSelectedBorderColor,
this.checkboxCheckColor,
});
final FlutterFlowDataTableController<T> controller;
final List<T> data;
final int? numRows;
final ColumnsBuilder columnsBuilder;
final DataRowBuilder<T> dataRowBuilder;
final Widget? Function()? emptyBuilder;
// Callback functions
final Function(int)? onPageChanged;
final Function(int, bool)? onSortChanged;
final Function(int)? onRowsPerPageChanged;
// Functionality options
final bool paginated;
final bool selectable;
final bool showFirstLastButtons;
final bool hidePaginator;
// Size and shape options
final double? width;
final double? height;
final double? minWidth;
final double headingRowHeight;
final double dataRowHeight;
final double columnSpacing;
// Table style options
final Color? headingRowColor;
final Color? sortIconColor;
final BorderRadius? borderRadius;
final bool addHorizontalDivider;
final bool addTopAndBottomDivider;
final bool hideDefaultHorizontalDivider;
final Color? horizontalDividerColor;
final double? horizontalDividerThickness;
final bool addVerticalDivider;
final Color? verticalDividerColor;
final double? verticalDividerThickness;
// Checkbox style options
final Color? checkboxUnselectedFillColor;
final Color? checkboxSelectedFillColor;
final Color? checkboxUnselectedBorderColor;
final Color? checkboxSelectedBorderColor;
final Color? checkboxCheckColor;
@override
State<FlutterFlowDataTable<T>> createState() =>
_FlutterFlowDataTableState<T>();
}
class _FlutterFlowDataTableState<T> extends State<FlutterFlowDataTable<T>> {
FlutterFlowDataTableController<T> get controller => widget.controller;
int get rowCount => controller.rowCount;
int get initialRowsPerPage =>
rowCount > _kMinRowsPerPage ? defaultRowsPerPage : _kMinRowsPerPage;
@override
void initState() {
super.initState();
dataTableShowLogs = false; // Disables noisy DataTable2 debug statements.
controller.init(
dataRowBuilder: widget.dataRowBuilder,
selectable: widget.selectable,
initialData: widget.data,
initialNumRows: widget.numRows,
);
// ignore: cascade_invocations
controller.addListener(() => setState(() {}));
}
@override
void didUpdateWidget(FlutterFlowDataTable<T> oldWidget) {
super.didUpdateWidget(oldWidget);
controller.updateData(
data: widget.data,
numRows: widget.numRows,
notify: true,
);
}
@override
Widget build(BuildContext context) {
final columns = widget.columnsBuilder(
(index, ascending) {
controller.updateSort(
columnIndex: index,
ascending: ascending,
onSortChanged: widget.onSortChanged,
);
setState(() {});
},
);
final checkboxThemeData = CheckboxThemeData(
checkColor: MaterialStateProperty.all(
widget.checkboxCheckColor ?? Colors.black54,
),
fillColor: MaterialStateProperty.resolveWith(
(states) => states.contains(MaterialState.selected)
? widget.checkboxSelectedFillColor ?? Colors.white.withOpacity(0.01)
: widget.checkboxUnselectedFillColor ??
Colors.white.withOpacity(0.01),
),
side: MaterialStateBorderSide.resolveWith(
(states) => BorderSide(
width: 2.0,
color: states.contains(MaterialState.selected)
? widget.checkboxSelectedBorderColor ?? Colors.black54
: widget.checkboxUnselectedBorderColor ?? Colors.black54,
),
),
overlayColor: MaterialStateProperty.all(Colors.transparent),
);
final horizontalBorder = widget.addHorizontalDivider
? BorderSide(
color: widget.horizontalDividerColor ?? Colors.transparent,
width: widget.horizontalDividerThickness ?? 1.0,
)
: BorderSide.none;
return ClipRRect(
borderRadius: widget.borderRadius ?? BorderRadius.zero,
child: SizedBox(
width: widget.width,
height: widget.height,
child: Theme(
data: Theme.of(context).copyWith(
iconTheme: widget.sortIconColor != null
? IconThemeData(color: widget.sortIconColor)
: null,
),
child: PaginatedDataTable2(
source: controller,
controller:
widget.paginated ? controller.paginatorController : null,
rowsPerPage: widget.paginated ? initialRowsPerPage : rowCount,
availableRowsPerPage: const [5, 10, 25, 50, 100],
onPageChanged: widget.onPageChanged != null
? (index) => widget.onPageChanged!(index)
: null,
columnSpacing: widget.columnSpacing,
onRowsPerPageChanged: widget.paginated
? (value) {
controller.rowsPerPage = value ?? initialRowsPerPage;
if (widget.onRowsPerPageChanged != null) {
widget.onRowsPerPageChanged!(controller.rowsPerPage);
}
}
: null,
columns: columns,
empty: widget.emptyBuilder != null ? widget.emptyBuilder!() : null,
sortColumnIndex: controller.sortColumnIndex,
sortAscending: controller.sortAscending,
showCheckboxColumn: widget.selectable,
datarowCheckboxTheme: checkboxThemeData,
headingCheckboxTheme: checkboxThemeData,
hidePaginator: !widget.paginated || widget.hidePaginator,
wrapInCard: false,
renderEmptyRowsInTheEnd: false,
border: TableBorder(
horizontalInside: horizontalBorder,
verticalInside: widget.addVerticalDivider
? BorderSide(
color: widget.verticalDividerColor ?? Colors.transparent,
width: widget.verticalDividerThickness ?? 1.0,
)
: BorderSide.none,
bottom: widget.addTopAndBottomDivider
? horizontalBorder
: BorderSide.none,
),
dividerThickness: widget.hideDefaultHorizontalDivider ? 0.0 : null,
headingRowColor: MaterialStateProperty.all(widget.headingRowColor),
headingRowHeight: widget.headingRowHeight,
dataRowHeight: widget.dataRowHeight,
showFirstLastButtons: widget.showFirstLastButtons,
minWidth: math.max(widget.minWidth ?? 0, _getColumnsWidth(columns)),
),
),
),
);
}
// Return the total fixed width of all columns that have a specified width,
// plus one to make the data table scrollable if there is insufficient space.
double _getColumnsWidth(List<DataColumn> columns) =>
columns.where((c) => c is DataColumn2 && c.fixedWidth != null).fold(
((widget.selectable ? 2 : 1) * _kDataTableHorizontalMargin) + 1,
(sum, col) => sum + (col as DataColumn2).fixedWidth!,
);
}

View File

@ -562,14 +562,6 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
},
// peopleOnThePropertyPage
{
'omjuk919': {
'pt': 'Foto',
'en': 'Photo',
},
'fli7tpz6': {
'pt': 'Nome',
'en': 'Name',
},
'nsu13r5d': {
'pt': 'Pessoas na Propriedade',
'en': 'People on the Property',

View File

@ -32,54 +32,56 @@ String uploadedFileToString(FFUploadedFile uploadedFile) =>
String? serializeParam(
dynamic param,
ParamType paramType, [
ParamType paramType, {
bool isList = false,
]) {
}) {
try {
if (param == null) {
return null;
}
if (isList) {
final serializedValues = (param as Iterable)
.map((p) => serializeParam(p, paramType, false))
.map((p) => serializeParam(p, paramType, isList: false))
.where((p) => p != null)
.map((p) => p!)
.toList();
return json.encode(serializedValues);
}
String? data;
switch (paramType) {
case ParamType.int:
return param.toString();
data = param.toString();
case ParamType.double:
return param.toString();
data = param.toString();
case ParamType.String:
return param;
data = param;
case ParamType.bool:
return param ? 'true' : 'false';
data = param ? 'true' : 'false';
case ParamType.DateTime:
return (param as DateTime).millisecondsSinceEpoch.toString();
data = (param as DateTime).millisecondsSinceEpoch.toString();
case ParamType.DateTimeRange:
return dateTimeRangeToString(param as DateTimeRange);
data = dateTimeRangeToString(param as DateTimeRange);
case ParamType.LatLng:
return (param as LatLng).serialize();
data = (param as LatLng).serialize();
case ParamType.Color:
return (param as Color).toCssString();
data = (param as Color).toCssString();
case ParamType.FFPlace:
return placeToString(param as FFPlace);
data = placeToString(param as FFPlace);
case ParamType.FFUploadedFile:
return uploadedFileToString(param as FFUploadedFile);
data = uploadedFileToString(param as FFUploadedFile);
case ParamType.JSON:
return json.encode(param);
data = json.encode(param);
case ParamType.DataStruct:
return param is BaseStruct ? param.serialize() : null;
data = param is BaseStruct ? param.serialize() : null;
case ParamType.Enum:
return (param is Enum) ? param.serialize() : null;
data = (param is Enum) ? param.serialize() : null;
default:
return null;
data = null;
}
return data;
} catch (e) {
print('Error serializing parameter: $e');
return null;

View File

@ -38,6 +38,7 @@ class MyApp extends StatefulWidget {
class _MyAppState extends State<MyApp> {
Locale? _locale = FFLocalizations.getStoredLocale();
ThemeMode _themeMode = FlutterFlowTheme.themeMode;
late AppStateNotifier _appStateNotifier;

View File

@ -88,12 +88,11 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
child: Column(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
decoration: BoxDecoration(
color: FlutterFlowTheme.of(context).primary,
borderRadius: const BorderRadius.only(
decoration: const BoxDecoration(
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(5.0),
bottomRight: Radius.circular(5.0),
topLeft: Radius.circular(0.0),
@ -101,22 +100,21 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
shape: BoxShape.rectangle,
),
child: Row(
child: Column(
mainAxisSize: MainAxisSize.max,
children: [
Expanded(
child: Padding(
padding: const EdgeInsetsDirectional.fromSTEB(
0.0, 30.0, 0.0, 0.0),
Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Flexible(
child: Container(
width: 100.0,
height: 100.0,
width: double.infinity,
decoration: const BoxDecoration(),
child: Padding(
padding: const EdgeInsets.all(12.0),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Container(
width: 50.0,
@ -133,17 +131,12 @@ class _HomePageWidgetState extends State<HomePageWidget> {
fit: BoxFit.cover,
),
),
Align(
alignment: const AlignmentDirectional(0.0, 0.0),
child: Container(
decoration: const BoxDecoration(),
Flexible(
child: Row(
mainAxisSize: MainAxisSize.max,
children: [
Padding(
padding: const EdgeInsetsDirectional
.fromSTEB(
10.0, 0.0, 0.0, 0.0),
Container(
decoration: const BoxDecoration(),
child: Text(
FFLocalizations.of(context)
.getText(
@ -154,10 +147,10 @@ class _HomePageWidgetState extends State<HomePageWidget> {
.bodyLarge
.override(
fontFamily: 'Nunito Sans',
color:
FlutterFlowTheme.of(
color: FlutterFlowTheme.of(
context)
.info,
.primaryText,
fontSize: 14.0,
letterSpacing: 0.0,
fontWeight:
FontWeight.normal,
@ -168,40 +161,55 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
),
),
],
].divide(const SizedBox(width: 20.0)),
),
),
]
.divide(const SizedBox(width: 10.0))
.addToStart(const SizedBox(width: 20.0)),
),
),
),
],
),
),
),
),
),
Container(
width: 100.0,
height: 100.0,
decoration: const BoxDecoration(),
Expanded(
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.end,
children: [
Flexible(
child: Padding(
padding: const EdgeInsetsDirectional.fromSTEB(
0.0, 5.9, 40.0, 0.0),
child: FlutterFlowIconButton(
borderRadius: 100.0,
borderWidth: 1.0,
buttonSize: 1.0,
buttonSize: 0.0,
icon: Icon(
Icons.close_sharp,
color: FlutterFlowTheme.of(context).info,
size: 24.0,
color: FlutterFlowTheme.of(context)
.primary,
size: 20.0,
),
onPressed: () async {
if (scaffoldKey.currentState!.isDrawerOpen ||
scaffoldKey.currentState!.isEndDrawerOpen) {
if (scaffoldKey
.currentState!.isDrawerOpen ||
scaffoldKey.currentState!
.isEndDrawerOpen) {
Navigator.pop(context);
}
},
),
),
),
],
),
),
]
.divide(const SizedBox(width: 0.0))
.around(const SizedBox(width: 0.0)),
),
].addToStart(const SizedBox(height: 30.0)),
),
),
Padding(
padding:
const EdgeInsetsDirectional.fromSTEB(0.0, 10.0, 0.0, 0.0),
@ -219,6 +227,7 @@ class _HomePageWidgetState extends State<HomePageWidget> {
autofocus: false,
obscureText: false,
decoration: InputDecoration(
isDense: true,
labelStyle: FlutterFlowTheme.of(context)
.labelMedium
.override(
@ -248,30 +257,30 @@ class _HomePageWidgetState extends State<HomePageWidget> {
borderSide: BorderSide(
color: FlutterFlowTheme.of(context)
.customColor1,
width: 2.0,
width: 0.5,
),
borderRadius: BorderRadius.circular(6.0),
borderRadius: BorderRadius.circular(2.0),
),
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context).primary,
width: 2.0,
width: 0.5,
),
borderRadius: BorderRadius.circular(6.0),
borderRadius: BorderRadius.circular(2.0),
),
errorBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context).error,
width: 2.0,
width: 0.5,
),
borderRadius: BorderRadius.circular(6.0),
borderRadius: BorderRadius.circular(2.0),
),
focusedErrorBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context).error,
width: 2.0,
width: 0.5,
),
borderRadius: BorderRadius.circular(6.0),
borderRadius: BorderRadius.circular(2.0),
),
prefixIcon: const Icon(
Icons.search_sharp,
@ -293,20 +302,31 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
),
),
],
]
.addToStart(const SizedBox(width: 30.0))
.addToEnd(const SizedBox(width: 30.0)),
),
),
Expanded(
Flexible(
child: Container(
width: double.infinity,
height: double.infinity,
decoration: const BoxDecoration(),
child: Padding(
padding:
const EdgeInsetsDirectional.fromSTEB(10.0, 20.0, 10.0, 0.0),
child: ListView(
padding: EdgeInsets.zero,
scrollDirection: Axis.vertical,
padding: const EdgeInsetsDirectional.fromSTEB(
10.0, 20.0, 10.0, 0.0),
child: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Column(
mainAxisSize: MainAxisSize.max,
children: [
Divider(
thickness: 0.1,
color:
FlutterFlowTheme.of(context).customColor1,
),
Padding(
padding: const EdgeInsetsDirectional.fromSTEB(
0.0, 0.0, 0.0, 1.0),
@ -316,7 +336,7 @@ class _HomePageWidgetState extends State<HomePageWidget> {
borderRadius: BorderRadius.circular(24.0),
),
child: Padding(
padding: const EdgeInsets.all(16.0),
padding: const EdgeInsets.all(4.0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
@ -330,15 +350,16 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
child: Icon(
FFIcons.kfast,
color: FlutterFlowTheme.of(context)
color:
FlutterFlowTheme.of(context)
.primary,
size: 24.0,
size: 20.0,
),
),
Expanded(
child: Padding(
padding:
const EdgeInsetsDirectional.fromSTEB(
padding: const EdgeInsetsDirectional
.fromSTEB(
10.0, 0.0, 0.0, 0.0),
child: Text(
FFLocalizations.of(context)
@ -350,12 +371,14 @@ class _HomePageWidgetState extends State<HomePageWidget> {
.titleLarge
.override(
fontFamily: 'Nunito',
color: FlutterFlowTheme.of(
color:
FlutterFlowTheme.of(
context)
.primaryText,
fontSize: 15.0,
letterSpacing: 0.0,
fontWeight: FontWeight.w500,
fontWeight:
FontWeight.w500,
useGoogleFonts:
GoogleFonts.asMap()
.containsKey(
@ -376,7 +399,7 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
),
Divider(
thickness: 1.0,
thickness: 0.1,
color:
FlutterFlowTheme.of(context).customColor1,
),
@ -389,7 +412,7 @@ class _HomePageWidgetState extends State<HomePageWidget> {
borderRadius: BorderRadius.circular(24.0),
),
child: Padding(
padding: const EdgeInsets.all(16.0),
padding: const EdgeInsets.all(4.0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
@ -403,15 +426,16 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
child: Icon(
FFIcons.khome,
color: FlutterFlowTheme.of(context)
color:
FlutterFlowTheme.of(context)
.primary,
size: 24.0,
),
),
Expanded(
child: Padding(
padding:
const EdgeInsetsDirectional.fromSTEB(
padding: const EdgeInsetsDirectional
.fromSTEB(
10.0, 0.0, 0.0, 0.0),
child: Text(
FFLocalizations.of(context)
@ -423,12 +447,14 @@ class _HomePageWidgetState extends State<HomePageWidget> {
.titleLarge
.override(
fontFamily: 'Nunito',
color: FlutterFlowTheme.of(
color:
FlutterFlowTheme.of(
context)
.primaryText,
fontSize: 15.0,
letterSpacing: 0.0,
fontWeight: FontWeight.w500,
fontWeight:
FontWeight.w500,
useGoogleFonts:
GoogleFonts.asMap()
.containsKey(
@ -449,7 +475,7 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
),
Divider(
thickness: 1.0,
thickness: 0.1,
color:
FlutterFlowTheme.of(context).customColor1,
),
@ -462,7 +488,7 @@ class _HomePageWidgetState extends State<HomePageWidget> {
borderRadius: BorderRadius.circular(24.0),
),
child: Padding(
padding: const EdgeInsets.all(16.0),
padding: const EdgeInsets.all(4.0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
@ -476,15 +502,16 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
child: Icon(
FFIcons.kpets,
color: FlutterFlowTheme.of(context)
color:
FlutterFlowTheme.of(context)
.primary,
size: 24.0,
size: 20.0,
),
),
Expanded(
child: Padding(
padding:
const EdgeInsetsDirectional.fromSTEB(
padding: const EdgeInsetsDirectional
.fromSTEB(
10.0, 0.0, 0.0, 0.0),
child: Text(
FFLocalizations.of(context)
@ -496,12 +523,14 @@ class _HomePageWidgetState extends State<HomePageWidget> {
.titleLarge
.override(
fontFamily: 'Nunito',
color: FlutterFlowTheme.of(
color:
FlutterFlowTheme.of(
context)
.primaryText,
fontSize: 15.0,
letterSpacing: 0.0,
fontWeight: FontWeight.w500,
fontWeight:
FontWeight.w500,
useGoogleFonts:
GoogleFonts.asMap()
.containsKey(
@ -522,7 +551,7 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
),
Divider(
thickness: 1.0,
thickness: 0.1,
color:
FlutterFlowTheme.of(context).customColor1,
),
@ -535,7 +564,7 @@ class _HomePageWidgetState extends State<HomePageWidget> {
borderRadius: BorderRadius.circular(24.0),
),
child: Padding(
padding: const EdgeInsets.all(16.0),
padding: const EdgeInsets.all(4.0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
@ -549,15 +578,16 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
child: Icon(
FFIcons.kvector1,
color: FlutterFlowTheme.of(context)
color:
FlutterFlowTheme.of(context)
.primary,
size: 24.0,
size: 22.0,
),
),
Expanded(
child: Padding(
padding:
const EdgeInsetsDirectional.fromSTEB(
padding: const EdgeInsetsDirectional
.fromSTEB(
10.0, 0.0, 0.0, 0.0),
child: Text(
FFLocalizations.of(context)
@ -569,12 +599,14 @@ class _HomePageWidgetState extends State<HomePageWidget> {
.titleLarge
.override(
fontFamily: 'Nunito',
color: FlutterFlowTheme.of(
color:
FlutterFlowTheme.of(
context)
.primaryText,
fontSize: 15.0,
letterSpacing: 0.0,
fontWeight: FontWeight.w500,
fontWeight:
FontWeight.w500,
useGoogleFonts:
GoogleFonts.asMap()
.containsKey(
@ -595,7 +627,7 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
),
Divider(
thickness: 1.0,
thickness: 0.1,
color:
FlutterFlowTheme.of(context).customColor1,
),
@ -608,7 +640,7 @@ class _HomePageWidgetState extends State<HomePageWidget> {
borderRadius: BorderRadius.circular(24.0),
),
child: Padding(
padding: const EdgeInsets.all(16.0),
padding: const EdgeInsets.all(4.0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
@ -622,15 +654,16 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
child: Icon(
FFIcons.kvector2,
color: FlutterFlowTheme.of(context)
color:
FlutterFlowTheme.of(context)
.primary,
size: 24.0,
size: 20.0,
),
),
Expanded(
child: Padding(
padding:
const EdgeInsetsDirectional.fromSTEB(
padding: const EdgeInsetsDirectional
.fromSTEB(
10.0, 0.0, 0.0, 0.0),
child: Text(
FFLocalizations.of(context)
@ -642,12 +675,14 @@ class _HomePageWidgetState extends State<HomePageWidget> {
.titleLarge
.override(
fontFamily: 'Nunito',
color: FlutterFlowTheme.of(
color:
FlutterFlowTheme.of(
context)
.primaryText,
fontSize: 15.0,
letterSpacing: 0.0,
fontWeight: FontWeight.w500,
fontWeight:
FontWeight.w500,
useGoogleFonts:
GoogleFonts.asMap()
.containsKey(
@ -668,7 +703,7 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
),
Divider(
thickness: 1.0,
thickness: 0.1,
color:
FlutterFlowTheme.of(context).customColor1,
),
@ -681,7 +716,7 @@ class _HomePageWidgetState extends State<HomePageWidget> {
borderRadius: BorderRadius.circular(24.0),
),
child: Padding(
padding: const EdgeInsets.all(16.0),
padding: const EdgeInsets.all(4.0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
@ -695,15 +730,16 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
child: Icon(
FFIcons.kvector3,
color: FlutterFlowTheme.of(context)
color:
FlutterFlowTheme.of(context)
.primary,
size: 24.0,
size: 20.0,
),
),
Expanded(
child: Padding(
padding:
const EdgeInsetsDirectional.fromSTEB(
padding: const EdgeInsetsDirectional
.fromSTEB(
10.0, 0.0, 0.0, 0.0),
child: Text(
FFLocalizations.of(context)
@ -715,12 +751,14 @@ class _HomePageWidgetState extends State<HomePageWidget> {
.titleLarge
.override(
fontFamily: 'Nunito',
color: FlutterFlowTheme.of(
color:
FlutterFlowTheme.of(
context)
.primaryText,
fontSize: 15.0,
letterSpacing: 0.0,
fontWeight: FontWeight.w500,
fontWeight:
FontWeight.w500,
useGoogleFonts:
GoogleFonts.asMap()
.containsKey(
@ -741,7 +779,7 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
),
Divider(
thickness: 1.0,
thickness: 0.1,
color:
FlutterFlowTheme.of(context).customColor1,
),
@ -754,7 +792,7 @@ class _HomePageWidgetState extends State<HomePageWidget> {
borderRadius: BorderRadius.circular(24.0),
),
child: Padding(
padding: const EdgeInsets.all(16.0),
padding: const EdgeInsets.all(4.0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
@ -768,15 +806,16 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
child: Icon(
FFIcons.kvector1,
color: FlutterFlowTheme.of(context)
color:
FlutterFlowTheme.of(context)
.primary,
size: 24.0,
size: 20.0,
),
),
Expanded(
child: Padding(
padding:
const EdgeInsetsDirectional.fromSTEB(
padding: const EdgeInsetsDirectional
.fromSTEB(
10.0, 0.0, 0.0, 0.0),
child: Text(
FFLocalizations.of(context)
@ -788,12 +827,14 @@ class _HomePageWidgetState extends State<HomePageWidget> {
.titleLarge
.override(
fontFamily: 'Nunito',
color: FlutterFlowTheme.of(
color:
FlutterFlowTheme.of(
context)
.primaryText,
fontSize: 15.0,
letterSpacing: 0.0,
fontWeight: FontWeight.w500,
fontWeight:
FontWeight.w500,
useGoogleFonts:
GoogleFonts.asMap()
.containsKey(
@ -813,18 +854,19 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
),
),
Divider(
thickness: 0.1,
color:
FlutterFlowTheme.of(context).customColor1,
),
],
),
],
),
),
),
Align(
alignment: const AlignmentDirectional(0.0, 1.0),
child: Padding(
padding:
const EdgeInsetsDirectional.fromSTEB(16.0, 12.0, 0.0, 0.0),
child: FFButtonWidget(
),
FFButtonWidget(
onPressed: () async {
FFAppState().isLogged = false;
setState(() {});
@ -845,14 +887,13 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
options: FFButtonOptions(
height: 40.0,
padding: const EdgeInsetsDirectional.fromSTEB(
0.0, 0.0, 0.0, 0.0),
iconPadding: const EdgeInsetsDirectional.fromSTEB(
0.0, 0.0, 0.0, 0.0),
padding:
const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0),
iconPadding:
const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0),
color: const Color(0x00D70000),
textStyle: FlutterFlowTheme.of(context)
.labelMedium
.override(
textStyle:
FlutterFlowTheme.of(context).labelMedium.override(
fontFamily: 'Plus Jakarta Sans',
color: FlutterFlowTheme.of(context).primaryText,
fontSize: 14.0,
@ -868,8 +909,6 @@ class _HomePageWidgetState extends State<HomePageWidget> {
borderRadius: BorderRadius.circular(50.0),
),
),
),
),
].addToEnd(const SizedBox(height: 64.0)),
),
),

View File

@ -1,4 +1,3 @@
import '/flutter_flow/flutter_flow_data_table.dart';
import '/flutter_flow/flutter_flow_util.dart';
import 'people_on_the_property_page_widget.dart'
show PeopleOnThePropertyPageWidget;
@ -9,9 +8,6 @@ class PeopleOnThePropertyPageModel
/// State fields for stateful widgets in this page.
final unfocusNode = FocusNode();
// State field(s) for PaginatedDataTable widget.
final paginatedDataTableController =
FlutterFlowDataTableController<dynamic>();
@override
void initState(BuildContext context) {}

View File

@ -1,5 +1,4 @@
import '/backend/api_requests/api_calls.dart';
import '/flutter_flow/flutter_flow_data_table.dart';
import '/flutter_flow/flutter_flow_icon_button.dart';
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
@ -106,119 +105,40 @@ class _PeopleOnThePropertyPageWidgetState
);
}
final columnGetPessoasLocalResponse = snapshot.data!;
return Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(
child: Builder(
return Builder(
builder: (context) {
final getPessoaLocal = PhpGroup.getPessoasLocalCall
final getPoepleProperty = PhpGroup.getPessoasLocalCall
.pessoas(
columnGetPessoasLocalResponse.jsonBody,
)
?.toList() ??
[];
return FlutterFlowDataTable<dynamic>(
controller: _model.paginatedDataTableController,
data: getPessoaLocal,
columnsBuilder: (onSortChanged) => [
DataColumn2(
label: DefaultTextStyle.merge(
softWrap: true,
child: Row(
return Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
children: List.generate(getPoepleProperty.length,
(getPoeplePropertyIndex) {
final getPoeplePropertyItem =
getPoepleProperty[getPoeplePropertyIndex];
return Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
FFLocalizations.of(context).getText(
'omjuk919' /* Foto */,
),
textAlign: TextAlign.center,
style: FlutterFlowTheme.of(context)
.labelLarge
.override(
fontFamily:
FlutterFlowTheme.of(context)
.labelLargeFamily,
color: FlutterFlowTheme.of(context)
.primaryText,
letterSpacing: 0.0,
useGoogleFonts: GoogleFonts.asMap()
.containsKey(
FlutterFlowTheme.of(context)
.labelLargeFamily),
),
),
],
),
),
),
DataColumn2(
label: DefaultTextStyle.merge(
softWrap: true,
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
FFLocalizations.of(context).getText(
'fli7tpz6' /* Nome */,
),
style: FlutterFlowTheme.of(context)
.labelLarge
.override(
fontFamily:
FlutterFlowTheme.of(context)
.labelLargeFamily,
color: FlutterFlowTheme.of(context)
.primaryText,
letterSpacing: 0.0,
useGoogleFonts: GoogleFonts.asMap()
.containsKey(
FlutterFlowTheme.of(context)
.labelLargeFamily),
),
),
],
),
),
),
],
dataRowBuilder: (getPessoaLocalItem,
getPessoaLocalIndex,
selected,
onSelectChanged) =>
DataRow(
color: MaterialStateProperty.all(
getPessoaLocalIndex % 2 == 0
? FlutterFlowTheme.of(context)
.primaryBackground
: FlutterFlowTheme.of(context)
.primaryBackground,
),
cells: [
Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.all(4.0),
child: Container(
width: 100.0,
height: 100.0,
width: 50.0,
height: 50.0,
clipBehavior: Clip.antiAlias,
decoration: const BoxDecoration(
shape: BoxShape.circle,
),
child: CachedNetworkImage(
fadeInDuration:
const Duration(milliseconds: 500),
fadeOutDuration:
const Duration(milliseconds: 500),
fadeInDuration: const Duration(milliseconds: 500),
fadeOutDuration: const Duration(milliseconds: 500),
imageUrl: valueOrDefault<String>(
'https://freaccess.com.br/freaccess/getImage.php?devUUID=${FFAppState().devUUID}&userUUID=${FFAppState().userUUID}&cliID=${FFAppState().cliUUID}&atividade=getFoto&Documento=&tipo=E&Email=${getJsonField(
getPessoaLocalItem,
getPoeplePropertyItem,
r'''$.USU_EMAIL''',
).toString()}',
'https://storage.googleapis.com/flutterflow-io-6f20.appspot.com/projects/flutter-freaccess-hub-0xgz9q/assets/7ftdetkzc3s0/360_F_64676383_LdbmhiNM6Ypzb3FM4PPuFP9rHe7ri8Ju.jpg',
@ -227,16 +147,9 @@ class _PeopleOnThePropertyPageWidgetState
),
),
),
],
),
Container(
width: 500.0,
height: 21.0,
decoration: const BoxDecoration(),
alignment: const AlignmentDirectional(-1.0, 0.0),
child: Text(
Text(
getJsonField(
getPessoaLocalItem,
getPoeplePropertyItem,
r'''$.USU_NOME''',
).toString(),
style: FlutterFlowTheme.of(context)
@ -247,38 +160,17 @@ class _PeopleOnThePropertyPageWidgetState
fontSize: 14.0,
letterSpacing: 0.0,
useGoogleFonts: GoogleFonts.asMap()
.containsKey(
FlutterFlowTheme.of(context)
.containsKey(FlutterFlowTheme.of(context)
.bodyMediumFamily),
),
),
),
].map((c) => DataCell(c)).toList(),
),
paginated: true,
selectable: false,
hidePaginator: false,
showFirstLastButtons: false,
width: MediaQuery.sizeOf(context).width * 1.0,
height: MediaQuery.sizeOf(context).height * 1.0,
headingRowHeight: 56.0,
dataRowHeight: 48.0,
columnSpacing: 20.0,
headingRowColor:
FlutterFlowTheme.of(context).primaryBackground,
borderRadius: BorderRadius.circular(0.0),
addHorizontalDivider: true,
addTopAndBottomDivider: true,
hideDefaultHorizontalDivider: false,
horizontalDividerColor:
FlutterFlowTheme.of(context).customColor5,
horizontalDividerThickness: 0.3,
addVerticalDivider: false,
]
.divide(const SizedBox(width: 20.0))
.addToStart(const SizedBox(width: 40.0)),
);
}).divide(const SizedBox(height: 3.0)),
);
},
),
),
],
);
},
),

View File

@ -72,7 +72,7 @@ class _ScheduleCompleteVisitPageWidgetState
getJsonField(
e,
r'''$.VTE_DOCUMENTO''',
))
).toString().toString())
.toList()
.toList()
.cast<dynamic>();
@ -1010,6 +1010,13 @@ class _ScheduleCompleteVisitPageWidgetState
context)
.languageCode,
);
_model.textController1
?.selection =
TextSelection.collapsed(
offset: _model
.textController1!
.text
.length);
});
},
child: Container(
@ -1397,6 +1404,13 @@ class _ScheduleCompleteVisitPageWidgetState
context)
.languageCode,
);
_model.textController2
?.selection =
TextSelection.collapsed(
offset: _model
.textController2!
.text
.length);
});
},
child: Container(

View File

@ -506,6 +506,12 @@ class _ScheduleProvisionalVisitPageWidgetState
locale: FFLocalizations.of(context)
.languageCode,
);
_model.textController1?.selection =
TextSelection.collapsed(
offset: _model
.textController1!
.text
.length);
});
},
child: Container(

View File

@ -29,7 +29,6 @@ dependencies:
cached_network_image: 3.3.1
collection: 1.18.0
crop_your_image: 1.0.0
data_table_2: 2.5.10
device_info_plus: 9.1.2
dropdown_button2: 2.3.9
easy_debounce: 2.0.1

View File

@ -47,6 +47,7 @@
<link rel="manifest" href="manifest.json">
</head>
<body>