add QR Code
This commit is contained in:
parent
8169362451
commit
eb7885c66e
|
@ -44,8 +44,8 @@
|
||||||
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
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>"; };
|
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>"; };
|
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||||
6436409F27A31CD400820AF7 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
6436409327A31CD500820AF7 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||||
6436409C27A31CDE00820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
6436409E27A31CD600820AF7 /* 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>"; };
|
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
|
@ -225,8 +225,8 @@
|
||||||
6436409C27A31CD800820AF7 /* InfoPlist.strings */ = {
|
6436409C27A31CD800820AF7 /* InfoPlist.strings */ = {
|
||||||
isa = PBXVariantGroup;
|
isa = PBXVariantGroup;
|
||||||
children = (
|
children = (
|
||||||
6436409F27A31CD400820AF7 /* pt */,
|
6436409327A31CD500820AF7 /* pt */,
|
||||||
6436409C27A31CDE00820AF7 /* en */,
|
6436409E27A31CD600820AF7 /* en */,
|
||||||
);
|
);
|
||||||
name = InfoPlist.strings;
|
name = InfoPlist.strings;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
|
|
@ -35,8 +35,7 @@ class PhpGroup {
|
||||||
RespondeSolicitacaoCall();
|
RespondeSolicitacaoCall();
|
||||||
static GetAccessCall getAccessCall = GetAccessCall();
|
static GetAccessCall getAccessCall = GetAccessCall();
|
||||||
static GetLiberationsCall getLiberationsCall = GetLiberationsCall();
|
static GetLiberationsCall getLiberationsCall = GetLiberationsCall();
|
||||||
static GetLiberationsCopyCall getLiberationsCopyCall =
|
static GetMessagesCall getMessagesCall = GetMessagesCall();
|
||||||
GetLiberationsCopyCall();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class LoginCall {
|
class LoginCall {
|
||||||
|
@ -1984,7 +1983,7 @@ class GetLiberationsCall {
|
||||||
.toList();
|
.toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
class GetLiberationsCopyCall {
|
class GetMessagesCall {
|
||||||
Future<ApiCallResponse> call({
|
Future<ApiCallResponse> call({
|
||||||
String? devUUID = '',
|
String? devUUID = '',
|
||||||
String? userUUID = '',
|
String? userUUID = '',
|
||||||
|
@ -1997,7 +1996,7 @@ class GetLiberationsCopyCall {
|
||||||
final baseUrl = PhpGroup.getBaseUrl();
|
final baseUrl = PhpGroup.getBaseUrl();
|
||||||
|
|
||||||
return ApiManager.instance.makeApiCall(
|
return ApiManager.instance.makeApiCall(
|
||||||
callName: 'getLiberations Copy',
|
callName: 'getMessages',
|
||||||
apiUrl: '$baseUrl/processRequest.php',
|
apiUrl: '$baseUrl/processRequest.php',
|
||||||
callType: ApiCallType.POST,
|
callType: ApiCallType.POST,
|
||||||
headers: {
|
headers: {
|
||||||
|
|
|
@ -97,6 +97,7 @@ class _BottomArrowLinkedLocalsComponentWidgetState
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
final gridViewGetLocalsResponse = snapshot.data!;
|
final gridViewGetLocalsResponse = snapshot.data!;
|
||||||
|
|
||||||
return Builder(
|
return Builder(
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
final eachLocals = PhpGroup.getLocalsCall
|
final eachLocals = PhpGroup.getLocalsCall
|
||||||
|
@ -107,6 +108,7 @@ class _BottomArrowLinkedLocalsComponentWidgetState
|
||||||
.toList()
|
.toList()
|
||||||
.toList() ??
|
.toList() ??
|
||||||
[];
|
[];
|
||||||
|
|
||||||
return GridView.builder(
|
return GridView.builder(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
gridDelegate:
|
gridDelegate:
|
||||||
|
|
|
@ -806,7 +806,119 @@ Propriedade */
|
||||||
alignment: const AlignmentDirectional(0.0, 0.0),
|
alignment: const AlignmentDirectional(0.0, 0.0),
|
||||||
child: Text(
|
child: Text(
|
||||||
FFLocalizations.of(context).getText(
|
FFLocalizations.of(context).getText(
|
||||||
'nxssjz3q' /* Histórico
|
'nxssjz3q' /* Consultar
|
||||||
|
Históricos */
|
||||||
|
,
|
||||||
|
),
|
||||||
|
style: FlutterFlowTheme.of(context)
|
||||||
|
.titleLarge
|
||||||
|
.override(
|
||||||
|
fontFamily: 'Nunito',
|
||||||
|
color: FlutterFlowTheme.of(context)
|
||||||
|
.primaryText,
|
||||||
|
fontSize: 14.0,
|
||||||
|
letterSpacing: 0.0,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
useGoogleFonts: GoogleFonts.asMap()
|
||||||
|
.containsKey('Nunito'),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
].divide(const SizedBox(height: 0.0)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsetsDirectional.fromSTEB(0.0, 10.0, 0.0, 20.0),
|
||||||
|
child: InkWell(
|
||||||
|
splashColor: Colors.transparent,
|
||||||
|
focusColor: Colors.transparent,
|
||||||
|
hoverColor: Colors.transparent,
|
||||||
|
highlightColor: Colors.transparent,
|
||||||
|
onTap: () async {
|
||||||
|
await widget.acessHistoryOptAction?.call();
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
width: 100.0,
|
||||||
|
height: double.infinity,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: FlutterFlowTheme.of(context).primaryBackground,
|
||||||
|
boxShadow: [
|
||||||
|
BoxShadow(
|
||||||
|
blurRadius: 4.0,
|
||||||
|
color: FlutterFlowTheme.of(context).customColor5,
|
||||||
|
offset: const Offset(
|
||||||
|
0.0,
|
||||||
|
2.0,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
borderRadius: BorderRadius.circular(24.0),
|
||||||
|
shape: BoxShape.rectangle,
|
||||||
|
border: Border.all(
|
||||||
|
color: FlutterFlowTheme.of(context).alternate,
|
||||||
|
width: 0.5,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(4.0),
|
||||||
|
child: Column(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Align(
|
||||||
|
alignment: const AlignmentDirectional(0.0, 0.0),
|
||||||
|
child: Row(
|
||||||
|
mainAxisSize: MainAxisSize.max,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: Align(
|
||||||
|
alignment:
|
||||||
|
const AlignmentDirectional(-1.0, 0.0),
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsetsDirectional.fromSTEB(
|
||||||
|
8.0, 0.0, 0.0, 0.0),
|
||||||
|
child: Container(
|
||||||
|
width: 30.0,
|
||||||
|
height: 30.0,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: FlutterFlowTheme.of(context)
|
||||||
|
.primaryBackground,
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
),
|
||||||
|
alignment:
|
||||||
|
const AlignmentDirectional(0.0, 0.0),
|
||||||
|
child: Icon(
|
||||||
|
Icons.history_sharp,
|
||||||
|
color: FlutterFlowTheme.of(context)
|
||||||
|
.accent1,
|
||||||
|
size: 24.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Align(
|
||||||
|
alignment: const AlignmentDirectional(0.0, 0.0),
|
||||||
|
child: Row(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Align(
|
||||||
|
alignment: const AlignmentDirectional(0.0, 0.0),
|
||||||
|
child: Text(
|
||||||
|
FFLocalizations.of(context).getText(
|
||||||
|
'589qufkw' /* Histórico
|
||||||
de Acesso */
|
de Acesso */
|
||||||
,
|
,
|
||||||
),
|
),
|
||||||
|
|
|
@ -1,9 +1,16 @@
|
||||||
import '/flutter_flow/flutter_flow_util.dart';
|
import '/flutter_flow/flutter_flow_util.dart';
|
||||||
import 'message_well_component_widget.dart' show MessageWellComponentWidget;
|
import 'message_well_component_widget.dart' show MessageWellComponentWidget;
|
||||||
|
import 'package:carousel_slider/carousel_slider.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class MessageWellComponentModel
|
class MessageWellComponentModel
|
||||||
extends FlutterFlowModel<MessageWellComponentWidget> {
|
extends FlutterFlowModel<MessageWellComponentWidget> {
|
||||||
|
/// State fields for stateful widgets in this component.
|
||||||
|
|
||||||
|
// State field(s) for Carousel widget.
|
||||||
|
CarouselController? carouselController;
|
||||||
|
int carouselCurrentIndex = 1;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState(BuildContext context) {}
|
void initState(BuildContext context) {}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import '/flutter_flow/flutter_flow_theme.dart';
|
import '/flutter_flow/flutter_flow_theme.dart';
|
||||||
import '/flutter_flow/flutter_flow_util.dart';
|
import '/flutter_flow/flutter_flow_util.dart';
|
||||||
import '/flutter_flow/flutter_flow_widgets.dart';
|
import '/flutter_flow/flutter_flow_widgets.dart';
|
||||||
|
import 'package:carousel_slider/carousel_slider.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:google_fonts/google_fonts.dart';
|
import 'package:google_fonts/google_fonts.dart';
|
||||||
import 'message_well_component_model.dart';
|
import 'message_well_component_model.dart';
|
||||||
|
@ -116,6 +117,30 @@ class _MessageWellComponentWidgetState
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: double.infinity,
|
||||||
|
height: 180.0,
|
||||||
|
child: CarouselSlider(
|
||||||
|
items: [
|
||||||
|
Container(),
|
||||||
|
Container(),
|
||||||
|
],
|
||||||
|
carouselController: _model.carouselController ??=
|
||||||
|
CarouselController(),
|
||||||
|
options: CarouselOptions(
|
||||||
|
initialPage: 1,
|
||||||
|
viewportFraction: 0.5,
|
||||||
|
disableCenter: true,
|
||||||
|
enlargeCenterPage: true,
|
||||||
|
enlargeFactor: 0.25,
|
||||||
|
enableInfiniteScroll: true,
|
||||||
|
scrollDirection: Axis.vertical,
|
||||||
|
autoPlay: false,
|
||||||
|
onPageChanged: (index, _) =>
|
||||||
|
_model.carouselCurrentIndex = index,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -55,14 +55,16 @@ class _ScheduleVisitDetailWidgetState extends State<ScheduleVisitDetailWidget> {
|
||||||
super.initState();
|
super.initState();
|
||||||
_model = createModel(context, () => ScheduleVisitDetailModel());
|
_model = createModel(context, () => ScheduleVisitDetailModel());
|
||||||
|
|
||||||
_model.textController1 ??= TextEditingController(text: widget.visitTempStr);
|
_model.textController1 ??=
|
||||||
|
TextEditingController(text: widget.visitTempStr);
|
||||||
_model.textFieldFocusNode1 ??= FocusNode();
|
_model.textFieldFocusNode1 ??= FocusNode();
|
||||||
|
|
||||||
_model.textController2 ??=
|
_model.textController2 ??=
|
||||||
TextEditingController(text: widget.visitStartDate);
|
TextEditingController(text: widget.visitStartDate);
|
||||||
_model.textFieldFocusNode2 ??= FocusNode();
|
_model.textFieldFocusNode2 ??= FocusNode();
|
||||||
|
|
||||||
_model.textController3 ??= TextEditingController(text: widget.visitEndDate);
|
_model.textController3 ??=
|
||||||
|
TextEditingController(text: widget.visitEndDate);
|
||||||
_model.textFieldFocusNode3 ??= FocusNode();
|
_model.textFieldFocusNode3 ??= FocusNode();
|
||||||
|
|
||||||
_model.textController4 ??= TextEditingController(
|
_model.textController4 ??= TextEditingController(
|
||||||
|
@ -170,6 +172,7 @@ class _ScheduleVisitDetailWidgetState extends State<ScheduleVisitDetailWidget> {
|
||||||
.toList()
|
.toList()
|
||||||
.take(1)
|
.take(1)
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
return SingleChildScrollView(
|
return SingleChildScrollView(
|
||||||
scrollDirection: Axis.horizontal,
|
scrollDirection: Axis.horizontal,
|
||||||
child: Row(
|
child: Row(
|
||||||
|
|
|
@ -96,6 +96,7 @@ class _UpArrowLinkedLocalsComponentWidgetState
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
final gridViewGetLocalsResponse = snapshot.data!;
|
final gridViewGetLocalsResponse = snapshot.data!;
|
||||||
|
|
||||||
return Builder(
|
return Builder(
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
final eachLocals = (PhpGroup.getLocalsCall
|
final eachLocals = (PhpGroup.getLocalsCall
|
||||||
|
@ -108,6 +109,7 @@ class _UpArrowLinkedLocalsComponentWidgetState
|
||||||
[])
|
[])
|
||||||
.take(2)
|
.take(2)
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
return GridView.builder(
|
return GridView.builder(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
gridDelegate:
|
gridDelegate:
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import '/backend/api_requests/api_calls.dart';
|
import '/backend/api_requests/api_calls.dart';
|
||||||
|
import '/components/molecular_components/throw_exception/throw_exception_widget.dart';
|
||||||
import '/flutter_flow/flutter_flow_theme.dart';
|
import '/flutter_flow/flutter_flow_theme.dart';
|
||||||
import '/flutter_flow/flutter_flow_util.dart';
|
import '/flutter_flow/flutter_flow_util.dart';
|
||||||
import '/flutter_flow/flutter_flow_widgets.dart';
|
import '/flutter_flow/flutter_flow_widgets.dart';
|
||||||
|
@ -224,7 +225,7 @@ class _ForgotPasswordTemplateComponentWidgetState
|
||||||
),
|
),
|
||||||
style: FlutterFlowTheme.of(context).bodyMedium.override(
|
style: FlutterFlowTheme.of(context).bodyMedium.override(
|
||||||
fontFamily: 'Plus Jakarta Sans',
|
fontFamily: 'Plus Jakarta Sans',
|
||||||
color: FlutterFlowTheme.of(context).secondaryText,
|
color: FlutterFlowTheme.of(context).primaryText,
|
||||||
fontSize: 14.0,
|
fontSize: 14.0,
|
||||||
letterSpacing: 0.0,
|
letterSpacing: 0.0,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
|
@ -245,23 +246,35 @@ class _ForgotPasswordTemplateComponentWidgetState
|
||||||
padding: const EdgeInsetsDirectional.fromSTEB(0.0, 24.0, 0.0, 0.0),
|
padding: const EdgeInsetsDirectional.fromSTEB(0.0, 24.0, 0.0, 0.0),
|
||||||
child: FFButtonWidget(
|
child: FFButtonWidget(
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
var shouldSetState = false;
|
|
||||||
_model.req = await PhpGroup.forgotPasswordCall.call(
|
_model.req = await PhpGroup.forgotPasswordCall.call(
|
||||||
email: _model.emailAddressTextController.text,
|
email: _model.emailAddressTextController.text,
|
||||||
);
|
);
|
||||||
|
|
||||||
shouldSetState = true;
|
|
||||||
if (PhpGroup.forgotPasswordCall.error(
|
if (PhpGroup.forgotPasswordCall.error(
|
||||||
(_model.req?.jsonBody ?? ''),
|
(_model.req?.jsonBody ?? ''),
|
||||||
) ==
|
) ==
|
||||||
false) {
|
false) {
|
||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
} else {
|
} else {
|
||||||
if (shouldSetState) setState(() {});
|
await showModalBottomSheet(
|
||||||
return;
|
isScrollControlled: true,
|
||||||
|
backgroundColor: Colors.transparent,
|
||||||
|
enableDrag: false,
|
||||||
|
context: context,
|
||||||
|
builder: (context) {
|
||||||
|
return Padding(
|
||||||
|
padding: MediaQuery.viewInsetsOf(context),
|
||||||
|
child: ThrowExceptionWidget(
|
||||||
|
msg: PhpGroup.forgotPasswordCall.msg(
|
||||||
|
(_model.req?.jsonBody ?? ''),
|
||||||
|
)!,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
).then((value) => safeSetState(() {}));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (shouldSetState) setState(() {});
|
setState(() {});
|
||||||
},
|
},
|
||||||
text: FFLocalizations.of(context).getText(
|
text: FFLocalizations.of(context).getText(
|
||||||
'74rnd5bu' /* Enviar */,
|
'74rnd5bu' /* Enviar */,
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
import '/flutter_flow/flutter_flow_util.dart';
|
||||||
|
import 'qr_code_pass_key_template_component_widget.dart'
|
||||||
|
show QrCodePassKeyTemplateComponentWidget;
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class QrCodePassKeyTemplateComponentModel
|
||||||
|
extends FlutterFlowModel<QrCodePassKeyTemplateComponentWidget> {
|
||||||
|
/// State fields for stateful widgets in this component.
|
||||||
|
|
||||||
|
final formKey = GlobalKey<FormState>();
|
||||||
|
// State field(s) for keyTextField widget.
|
||||||
|
FocusNode? keyTextFieldFocusNode;
|
||||||
|
TextEditingController? keyTextFieldTextController;
|
||||||
|
late bool keyTextFieldVisibility;
|
||||||
|
String? Function(BuildContext, String?)? keyTextFieldTextControllerValidator;
|
||||||
|
String? _keyTextFieldTextControllerValidator(
|
||||||
|
BuildContext context, String? val) {
|
||||||
|
if (val == null || val.isEmpty) {
|
||||||
|
return FFLocalizations.of(context).getText(
|
||||||
|
'f128ajey' /* Field is required */,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState(BuildContext context) {
|
||||||
|
keyTextFieldVisibility = false;
|
||||||
|
keyTextFieldTextControllerValidator = _keyTextFieldTextControllerValidator;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
keyTextFieldFocusNode?.dispose();
|
||||||
|
keyTextFieldTextController?.dispose();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,327 @@
|
||||||
|
import '/flutter_flow/flutter_flow_theme.dart';
|
||||||
|
import '/flutter_flow/flutter_flow_util.dart';
|
||||||
|
import '/flutter_flow/flutter_flow_widgets.dart';
|
||||||
|
import 'package:easy_debounce/easy_debounce.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
|
import 'package:google_fonts/google_fonts.dart';
|
||||||
|
import 'qr_code_pass_key_template_component_model.dart';
|
||||||
|
export 'qr_code_pass_key_template_component_model.dart';
|
||||||
|
|
||||||
|
class QrCodePassKeyTemplateComponentWidget extends StatefulWidget {
|
||||||
|
const QrCodePassKeyTemplateComponentWidget({
|
||||||
|
super.key,
|
||||||
|
required this.toggleActionStatus,
|
||||||
|
});
|
||||||
|
|
||||||
|
final Future Function(String key)? toggleActionStatus;
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<QrCodePassKeyTemplateComponentWidget> createState() =>
|
||||||
|
_QrCodePassKeyTemplateComponentWidgetState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _QrCodePassKeyTemplateComponentWidgetState
|
||||||
|
extends State<QrCodePassKeyTemplateComponentWidget> {
|
||||||
|
late QrCodePassKeyTemplateComponentModel _model;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void setState(VoidCallback callback) {
|
||||||
|
super.setState(callback);
|
||||||
|
_model.onUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
_model = createModel(context, () => QrCodePassKeyTemplateComponentModel());
|
||||||
|
|
||||||
|
_model.keyTextFieldTextController ??= TextEditingController();
|
||||||
|
_model.keyTextFieldFocusNode ??= FocusNode();
|
||||||
|
_model.keyTextFieldFocusNode!.addListener(() => setState(() {}));
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
_model.maybeDispose();
|
||||||
|
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Align(
|
||||||
|
alignment: const AlignmentDirectional(0.0, 1.0),
|
||||||
|
child: Container(
|
||||||
|
width: double.infinity,
|
||||||
|
height: 300.0,
|
||||||
|
constraints: const BoxConstraints(
|
||||||
|
maxWidth: 570.0,
|
||||||
|
),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: FlutterFlowTheme.of(context).primaryBackground,
|
||||||
|
borderRadius: const BorderRadius.only(
|
||||||
|
bottomLeft: Radius.circular(0.0),
|
||||||
|
bottomRight: Radius.circular(0.0),
|
||||||
|
topLeft: Radius.circular(15.0),
|
||||||
|
topRight: Radius.circular(15.0),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: Column(
|
||||||
|
mainAxisSize: MainAxisSize.max,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
// This row exists for when the "app bar" is hidden on desktop, having a way back for the user can work well.
|
||||||
|
if (responsiveVisibility(
|
||||||
|
context: context,
|
||||||
|
phone: false,
|
||||||
|
tablet: false,
|
||||||
|
))
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 16.0, 8.0),
|
||||||
|
child: InkWell(
|
||||||
|
splashColor: Colors.transparent,
|
||||||
|
focusColor: Colors.transparent,
|
||||||
|
hoverColor: Colors.transparent,
|
||||||
|
highlightColor: Colors.transparent,
|
||||||
|
onTap: () async {
|
||||||
|
context.safePop();
|
||||||
|
},
|
||||||
|
child: Row(
|
||||||
|
mainAxisSize: MainAxisSize.max,
|
||||||
|
children: [
|
||||||
|
const Padding(
|
||||||
|
padding: EdgeInsetsDirectional.fromSTEB(
|
||||||
|
0.0, 12.0, 0.0, 12.0),
|
||||||
|
child: Icon(
|
||||||
|
Icons.arrow_back_rounded,
|
||||||
|
color: Color(0xFF15161E),
|
||||||
|
size: 24.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding:
|
||||||
|
const EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 0.0, 0.0),
|
||||||
|
child: Text(
|
||||||
|
'',
|
||||||
|
style:
|
||||||
|
FlutterFlowTheme.of(context).bodyMedium.override(
|
||||||
|
fontFamily: 'Plus Jakarta Sans',
|
||||||
|
color: const Color(0xFF15161E),
|
||||||
|
fontSize: 14.0,
|
||||||
|
letterSpacing: 0.0,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
useGoogleFonts: GoogleFonts.asMap()
|
||||||
|
.containsKey('Plus Jakarta Sans'),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 0.0, 0.0),
|
||||||
|
child: Text(
|
||||||
|
FFLocalizations.of(context).getText(
|
||||||
|
'h1xilful' /* DIGITE A SUA SENHA */,
|
||||||
|
),
|
||||||
|
style: FlutterFlowTheme.of(context).headlineMedium.override(
|
||||||
|
fontFamily: 'Outfit',
|
||||||
|
color: FlutterFlowTheme.of(context).primaryText,
|
||||||
|
fontSize: 24.0,
|
||||||
|
letterSpacing: 0.0,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
useGoogleFonts: GoogleFonts.asMap().containsKey('Outfit'),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsetsDirectional.fromSTEB(16.0, 4.0, 16.0, 4.0),
|
||||||
|
child: Text(
|
||||||
|
FFLocalizations.of(context).getText(
|
||||||
|
'ujodm2ci' /* Para gerar o QR Code digite a ... */,
|
||||||
|
),
|
||||||
|
style: FlutterFlowTheme.of(context).labelMedium.override(
|
||||||
|
fontFamily: 'Plus Jakarta Sans',
|
||||||
|
color: FlutterFlowTheme.of(context).primaryText,
|
||||||
|
fontSize: 14.0,
|
||||||
|
letterSpacing: 0.0,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
useGoogleFonts:
|
||||||
|
GoogleFonts.asMap().containsKey('Plus Jakarta Sans'),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Form(
|
||||||
|
key: _model.formKey,
|
||||||
|
autovalidateMode: AutovalidateMode.always,
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsetsDirectional.fromSTEB(16.0, 12.0, 16.0, 0.0),
|
||||||
|
child: SizedBox(
|
||||||
|
width: double.infinity,
|
||||||
|
child: TextFormField(
|
||||||
|
controller: _model.keyTextFieldTextController,
|
||||||
|
focusNode: _model.keyTextFieldFocusNode,
|
||||||
|
onChanged: (_) => EasyDebounce.debounce(
|
||||||
|
'_model.keyTextFieldTextController',
|
||||||
|
const Duration(milliseconds: 2000),
|
||||||
|
() => setState(() {}),
|
||||||
|
),
|
||||||
|
autofillHints: const [AutofillHints.password],
|
||||||
|
textCapitalization: TextCapitalization.none,
|
||||||
|
textInputAction: TextInputAction.done,
|
||||||
|
obscureText: !_model.keyTextFieldVisibility,
|
||||||
|
decoration: InputDecoration(
|
||||||
|
isDense: true,
|
||||||
|
labelText: FFLocalizations.of(context).getText(
|
||||||
|
'rfqrdet7' /* Senha */,
|
||||||
|
),
|
||||||
|
labelStyle:
|
||||||
|
FlutterFlowTheme.of(context).labelMedium.override(
|
||||||
|
fontFamily: 'Plus Jakarta Sans',
|
||||||
|
color: FlutterFlowTheme.of(context).primary,
|
||||||
|
fontSize: 14.0,
|
||||||
|
letterSpacing: 0.0,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
useGoogleFonts: GoogleFonts.asMap()
|
||||||
|
.containsKey('Plus Jakarta Sans'),
|
||||||
|
),
|
||||||
|
hintText: FFLocalizations.of(context).getText(
|
||||||
|
'zz1haydj' /* digite a sua senha..... */,
|
||||||
|
),
|
||||||
|
hintStyle:
|
||||||
|
FlutterFlowTheme.of(context).labelMedium.override(
|
||||||
|
fontFamily: 'Plus Jakarta Sans',
|
||||||
|
color: FlutterFlowTheme.of(context).primaryText,
|
||||||
|
fontSize: 14.0,
|
||||||
|
letterSpacing: 0.0,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
useGoogleFonts: GoogleFonts.asMap()
|
||||||
|
.containsKey('Plus Jakarta Sans'),
|
||||||
|
),
|
||||||
|
enabledBorder: OutlineInputBorder(
|
||||||
|
borderSide: BorderSide(
|
||||||
|
color: FlutterFlowTheme.of(context).accent1,
|
||||||
|
width: 2.0,
|
||||||
|
),
|
||||||
|
borderRadius: BorderRadius.circular(12.0),
|
||||||
|
),
|
||||||
|
focusedBorder: OutlineInputBorder(
|
||||||
|
borderSide: BorderSide(
|
||||||
|
color: FlutterFlowTheme.of(context).accent3,
|
||||||
|
width: 2.0,
|
||||||
|
),
|
||||||
|
borderRadius: BorderRadius.circular(12.0),
|
||||||
|
),
|
||||||
|
errorBorder: OutlineInputBorder(
|
||||||
|
borderSide: BorderSide(
|
||||||
|
color: FlutterFlowTheme.of(context).error,
|
||||||
|
width: 2.0,
|
||||||
|
),
|
||||||
|
borderRadius: BorderRadius.circular(12.0),
|
||||||
|
),
|
||||||
|
focusedErrorBorder: OutlineInputBorder(
|
||||||
|
borderSide: BorderSide(
|
||||||
|
color: FlutterFlowTheme.of(context).error,
|
||||||
|
width: 2.0,
|
||||||
|
),
|
||||||
|
borderRadius: BorderRadius.circular(12.0),
|
||||||
|
),
|
||||||
|
filled: true,
|
||||||
|
fillColor: FlutterFlowTheme.of(context).primaryBackground,
|
||||||
|
contentPadding: const EdgeInsetsDirectional.fromSTEB(
|
||||||
|
24.0, 24.0, 20.0, 24.0),
|
||||||
|
suffixIcon: InkWell(
|
||||||
|
onTap: () => setState(
|
||||||
|
() => _model.keyTextFieldVisibility =
|
||||||
|
!_model.keyTextFieldVisibility,
|
||||||
|
),
|
||||||
|
focusNode: FocusNode(skipTraversal: true),
|
||||||
|
child: Icon(
|
||||||
|
_model.keyTextFieldVisibility
|
||||||
|
? Icons.visibility_outlined
|
||||||
|
: Icons.visibility_off_outlined,
|
||||||
|
color: FlutterFlowTheme.of(context).accent1,
|
||||||
|
size: 22.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
style: FlutterFlowTheme.of(context).bodyMedium.override(
|
||||||
|
fontFamily: 'Plus Jakarta Sans',
|
||||||
|
color: FlutterFlowTheme.of(context).primaryText,
|
||||||
|
fontSize: 14.0,
|
||||||
|
letterSpacing: 0.0,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
useGoogleFonts: GoogleFonts.asMap()
|
||||||
|
.containsKey('Plus Jakarta Sans'),
|
||||||
|
),
|
||||||
|
maxLength: 4,
|
||||||
|
maxLengthEnforcement: MaxLengthEnforcement.none,
|
||||||
|
buildCounter: (context,
|
||||||
|
{required currentLength,
|
||||||
|
required isFocused,
|
||||||
|
maxLength}) =>
|
||||||
|
null,
|
||||||
|
keyboardType: TextInputType.visiblePassword,
|
||||||
|
cursorColor: FlutterFlowTheme.of(context).primary,
|
||||||
|
validator: _model.keyTextFieldTextControllerValidator
|
||||||
|
.asValidator(context),
|
||||||
|
inputFormatters: [
|
||||||
|
FilteringTextInputFormatter.allow(RegExp('[0-9]'))
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Align(
|
||||||
|
alignment: const AlignmentDirectional(0.0, 0.0),
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsetsDirectional.fromSTEB(0.0, 24.0, 0.0, 0.0),
|
||||||
|
child: FFButtonWidget(
|
||||||
|
onPressed: () async {
|
||||||
|
if (_model.formKey.currentState == null ||
|
||||||
|
!_model.formKey.currentState!.validate()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await widget.toggleActionStatus?.call(
|
||||||
|
_model.keyTextFieldTextController.text,
|
||||||
|
);
|
||||||
|
Navigator.pop(context);
|
||||||
|
},
|
||||||
|
text: FFLocalizations.of(context).getText(
|
||||||
|
'2cybbi5p' /* Enviar */,
|
||||||
|
),
|
||||||
|
options: FFButtonOptions(
|
||||||
|
width: 270.0,
|
||||||
|
height: 50.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(0xFF1AAB5F),
|
||||||
|
textStyle: FlutterFlowTheme.of(context).titleSmall.override(
|
||||||
|
fontFamily: 'Plus Jakarta Sans',
|
||||||
|
color: Colors.white,
|
||||||
|
fontSize: 16.0,
|
||||||
|
letterSpacing: 0.0,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
useGoogleFonts: GoogleFonts.asMap()
|
||||||
|
.containsKey('Plus Jakarta Sans'),
|
||||||
|
),
|
||||||
|
elevation: 3.0,
|
||||||
|
borderSide: const BorderSide(
|
||||||
|
color: Colors.transparent,
|
||||||
|
width: 1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
showLoadingIndicator: false,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -273,6 +273,7 @@ class _VisitorSearchModalTemplateComponentWidgetState
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
final visitor =
|
final visitor =
|
||||||
_model.visitors.map((e) => e).toList();
|
_model.visitors.map((e) => e).toList();
|
||||||
|
|
||||||
return ListView.builder(
|
return ListView.builder(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
scrollDirection: Axis.vertical,
|
scrollDirection: Axis.vertical,
|
||||||
|
|
|
@ -75,7 +75,8 @@ class _ViewVisitDetailWidgetState extends State<ViewVisitDetailWidget> {
|
||||||
TextEditingController(text: widget.visitStartDate);
|
TextEditingController(text: widget.visitStartDate);
|
||||||
_model.textFieldFocusNode2 ??= FocusNode();
|
_model.textFieldFocusNode2 ??= FocusNode();
|
||||||
|
|
||||||
_model.textController3 ??= TextEditingController(text: widget.visitEndDate);
|
_model.textController3 ??=
|
||||||
|
TextEditingController(text: widget.visitEndDate);
|
||||||
_model.textFieldFocusNode3 ??= FocusNode();
|
_model.textFieldFocusNode3 ??= FocusNode();
|
||||||
|
|
||||||
_model.textController4 ??=
|
_model.textController4 ??=
|
||||||
|
|
|
@ -105,3 +105,7 @@ String jsonToStr(dynamic json) {
|
||||||
String jsonString = jsonEncode(json);
|
String jsonString = jsonEncode(json);
|
||||||
return jsonString;
|
return jsonString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double getProgressValue(int percentage) {
|
||||||
|
return percentage / 100;
|
||||||
|
}
|
||||||
|
|
|
@ -49,9 +49,7 @@ abstract class FlutterFlowModel<W extends Widget> {
|
||||||
// The widget associated with this model. This is useful for accessing the
|
// The widget associated with this model. This is useful for accessing the
|
||||||
// parameters of the widget, for example.
|
// parameters of the widget, for example.
|
||||||
W? _widget;
|
W? _widget;
|
||||||
// This will always be non-null when used, but is nullable to allow us to
|
W? get widget => _widget;
|
||||||
// dispose of the widget in the [dispose] method (for garbage collection).
|
|
||||||
W get widget => _widget!;
|
|
||||||
|
|
||||||
// Dispose methods
|
// Dispose methods
|
||||||
// Whether to dispose this model when the corresponding widget is
|
// Whether to dispose this model when the corresponding widget is
|
||||||
|
|
|
@ -591,6 +591,7 @@ extension TextStyleHelper on TextStyle {
|
||||||
bool useGoogleFonts = true,
|
bool useGoogleFonts = true,
|
||||||
TextDecoration? decoration,
|
TextDecoration? decoration,
|
||||||
double? lineHeight,
|
double? lineHeight,
|
||||||
|
List<Shadow>? shadows,
|
||||||
}) =>
|
}) =>
|
||||||
useGoogleFonts
|
useGoogleFonts
|
||||||
? GoogleFonts.getFont(
|
? GoogleFonts.getFont(
|
||||||
|
@ -602,6 +603,7 @@ extension TextStyleHelper on TextStyle {
|
||||||
fontStyle: fontStyle ?? this.fontStyle,
|
fontStyle: fontStyle ?? this.fontStyle,
|
||||||
decoration: decoration,
|
decoration: decoration,
|
||||||
height: lineHeight,
|
height: lineHeight,
|
||||||
|
shadows: shadows,
|
||||||
)
|
)
|
||||||
: copyWith(
|
: copyWith(
|
||||||
fontFamily: fontFamily,
|
fontFamily: fontFamily,
|
||||||
|
@ -612,5 +614,6 @@ extension TextStyleHelper on TextStyle {
|
||||||
fontStyle: fontStyle,
|
fontStyle: fontStyle,
|
||||||
decoration: decoration,
|
decoration: decoration,
|
||||||
height: lineHeight,
|
height: lineHeight,
|
||||||
|
shadows: shadows,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -459,6 +459,37 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
|
||||||
'en': '',
|
'en': '',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
// qrCodePage
|
||||||
|
{
|
||||||
|
'vd84zgfe': {
|
||||||
|
'pt': 'Use esse QR Code para acesso',
|
||||||
|
'en': '',
|
||||||
|
},
|
||||||
|
'mxdrsbmy': {
|
||||||
|
'pt': 'Liberar QR Code',
|
||||||
|
'en': 'Release QR Code',
|
||||||
|
},
|
||||||
|
'6z6kvmhl': {
|
||||||
|
'pt': 'Certifique-se de que o QRCode está visivel para o leitor',
|
||||||
|
'en': '',
|
||||||
|
},
|
||||||
|
'wkjkxd2e': {
|
||||||
|
'pt': 'Trocando QR code em',
|
||||||
|
'en': '',
|
||||||
|
},
|
||||||
|
'3bfr2tjr': {
|
||||||
|
'pt': '20',
|
||||||
|
'en': '',
|
||||||
|
},
|
||||||
|
'ku7jqe53': {
|
||||||
|
'pt': 'QR Code de Acesso',
|
||||||
|
'en': 'Access QR Code',
|
||||||
|
},
|
||||||
|
'sejj3t8w': {
|
||||||
|
'pt': 'Home',
|
||||||
|
'en': '',
|
||||||
|
},
|
||||||
|
},
|
||||||
// visitorDetailsModalTemplateComponent
|
// visitorDetailsModalTemplateComponent
|
||||||
{
|
{
|
||||||
'kqzf7nx2': {
|
'kqzf7nx2': {
|
||||||
|
@ -759,6 +790,10 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
|
||||||
'en': 'People on\nthe Property',
|
'en': 'People on\nthe Property',
|
||||||
},
|
},
|
||||||
'nxssjz3q': {
|
'nxssjz3q': {
|
||||||
|
'pt': 'Consultar \nHistóricos',
|
||||||
|
'en': 'Consult \nHistories',
|
||||||
|
},
|
||||||
|
'589qufkw': {
|
||||||
'pt': 'Histórico \nde Acesso',
|
'pt': 'Histórico \nde Acesso',
|
||||||
'en': 'Access \nHistory',
|
'en': 'Access \nHistory',
|
||||||
},
|
},
|
||||||
|
@ -984,7 +1019,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
|
||||||
},
|
},
|
||||||
'74rnd5bu': {
|
'74rnd5bu': {
|
||||||
'pt': 'Enviar',
|
'pt': 'Enviar',
|
||||||
'en': 'To send',
|
'en': 'Send',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// visitRequestTemplateComponent
|
// visitRequestTemplateComponent
|
||||||
|
@ -1068,6 +1103,39 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
|
||||||
'en': '',
|
'en': '',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
// qrCodePassKeyTemplateComponent
|
||||||
|
{
|
||||||
|
'h1xilful': {
|
||||||
|
'pt': 'DIGITE A SUA SENHA',
|
||||||
|
'en': 'ENTER YOUR PASSWORD',
|
||||||
|
},
|
||||||
|
'ujodm2ci': {
|
||||||
|
'pt':
|
||||||
|
'Para gerar o QR Code digite a senha cadastrado no aplicativo e clique em enviar.',
|
||||||
|
'en':
|
||||||
|
'To generate the QR Code, enter the password registered in the application and click send.',
|
||||||
|
},
|
||||||
|
'rfqrdet7': {
|
||||||
|
'pt': 'Senha',
|
||||||
|
'en': 'Password',
|
||||||
|
},
|
||||||
|
'zz1haydj': {
|
||||||
|
'pt': 'digite a sua senha.....',
|
||||||
|
'en': 'enter your password.....',
|
||||||
|
},
|
||||||
|
'f128ajey': {
|
||||||
|
'pt': 'Field is required',
|
||||||
|
'en': '',
|
||||||
|
},
|
||||||
|
'otk0c2pe': {
|
||||||
|
'pt': 'Please choose an option from the dropdown',
|
||||||
|
'en': '',
|
||||||
|
},
|
||||||
|
'2cybbi5p': {
|
||||||
|
'pt': 'Enviar',
|
||||||
|
'en': 'Send',
|
||||||
|
},
|
||||||
|
},
|
||||||
// Miscellaneous
|
// Miscellaneous
|
||||||
{
|
{
|
||||||
'i5smty81': {
|
'i5smty81': {
|
||||||
|
|
|
@ -142,6 +142,11 @@ GoRouter createRouter(AppStateNotifier appStateNotifier) => GoRouter(
|
||||||
name: 'welcomePage',
|
name: 'welcomePage',
|
||||||
path: '/welcomePage',
|
path: '/welcomePage',
|
||||||
builder: (context, params) => const WelcomePageWidget(),
|
builder: (context, params) => const WelcomePageWidget(),
|
||||||
|
),
|
||||||
|
FFRoute(
|
||||||
|
name: 'qrCodePage',
|
||||||
|
path: '/qrCodePage',
|
||||||
|
builder: (context, params) => const QrCodePageWidget(),
|
||||||
)
|
)
|
||||||
].map((r) => r.toRoute(appStateNotifier)).toList(),
|
].map((r) => r.toRoute(appStateNotifier)).toList(),
|
||||||
);
|
);
|
||||||
|
|
|
@ -153,6 +153,7 @@ enum ParamType {
|
||||||
FFPlace,
|
FFPlace,
|
||||||
FFUploadedFile,
|
FFUploadedFile,
|
||||||
JSON,
|
JSON,
|
||||||
|
|
||||||
DataStruct,
|
DataStruct,
|
||||||
Enum,
|
Enum,
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,3 +15,4 @@ export '/pages/liberation_history/liberation_history_widget.dart'
|
||||||
export '/pages/sign_in_page/sign_in_page_widget.dart' show SignInPageWidget;
|
export '/pages/sign_in_page/sign_in_page_widget.dart' show SignInPageWidget;
|
||||||
export '/pages/sign_up_page/sign_up_page_widget.dart' show SignUpPageWidget;
|
export '/pages/sign_up_page/sign_up_page_widget.dart' show SignUpPageWidget;
|
||||||
export '/pages/welcome_page/welcome_page_widget.dart' show WelcomePageWidget;
|
export '/pages/welcome_page/welcome_page_widget.dart' show WelcomePageWidget;
|
||||||
|
export '/pages/qr_code_page/qr_code_page_widget.dart' show QrCodePageWidget;
|
||||||
|
|
|
@ -173,6 +173,7 @@ class _AcessHistoryPageWidgetState extends State<AcessHistoryPageWidget> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
final wrapGetAccessResponse = snapshot.data!;
|
final wrapGetAccessResponse = snapshot.data!;
|
||||||
|
|
||||||
return Builder(
|
return Builder(
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
final accessHistory = PhpGroup.getAccessCall
|
final accessHistory = PhpGroup.getAccessCall
|
||||||
|
@ -181,6 +182,7 @@ class _AcessHistoryPageWidgetState extends State<AcessHistoryPageWidget> {
|
||||||
)
|
)
|
||||||
?.toList() ??
|
?.toList() ??
|
||||||
[];
|
[];
|
||||||
|
|
||||||
return Wrap(
|
return Wrap(
|
||||||
spacing: 2.0,
|
spacing: 2.0,
|
||||||
runSpacing: 1.0,
|
runSpacing: 1.0,
|
||||||
|
|
|
@ -82,6 +82,7 @@ class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
|
||||||
),
|
),
|
||||||
actions: const [],
|
actions: const [],
|
||||||
centerTitle: true,
|
centerTitle: true,
|
||||||
|
elevation: 0.0,
|
||||||
),
|
),
|
||||||
body: SafeArea(
|
body: SafeArea(
|
||||||
top: true,
|
top: true,
|
||||||
|
@ -207,6 +208,7 @@ class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
final columnGetLiberationsResponse = snapshot.data!;
|
final columnGetLiberationsResponse = snapshot.data!;
|
||||||
|
|
||||||
return Builder(
|
return Builder(
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
final liberationHistory = PhpGroup.getLiberationsCall
|
final liberationHistory = PhpGroup.getLiberationsCall
|
||||||
|
@ -215,6 +217,7 @@ class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
|
||||||
)
|
)
|
||||||
?.toList() ??
|
?.toList() ??
|
||||||
[];
|
[];
|
||||||
|
|
||||||
return SingleChildScrollView(
|
return SingleChildScrollView(
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisSize: MainAxisSize.max,
|
mainAxisSize: MainAxisSize.max,
|
||||||
|
|
|
@ -80,6 +80,7 @@ class _PeopleOnThePropertyPageWidgetState
|
||||||
),
|
),
|
||||||
actions: const [],
|
actions: const [],
|
||||||
centerTitle: true,
|
centerTitle: true,
|
||||||
|
elevation: 0.0,
|
||||||
),
|
),
|
||||||
body: SafeArea(
|
body: SafeArea(
|
||||||
top: true,
|
top: true,
|
||||||
|
@ -105,6 +106,7 @@ class _PeopleOnThePropertyPageWidgetState
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
final columnGetPessoasLocalResponse = snapshot.data!;
|
final columnGetPessoasLocalResponse = snapshot.data!;
|
||||||
|
|
||||||
return Builder(
|
return Builder(
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
final getPoepleProperty = PhpGroup.getPessoasLocalCall
|
final getPoepleProperty = PhpGroup.getPessoasLocalCall
|
||||||
|
@ -113,6 +115,7 @@ class _PeopleOnThePropertyPageWidgetState
|
||||||
)
|
)
|
||||||
?.toList() ??
|
?.toList() ??
|
||||||
[];
|
[];
|
||||||
|
|
||||||
return Column(
|
return Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
import '/flutter_flow/flutter_flow_util.dart';
|
||||||
|
import 'dart:async';
|
||||||
|
import 'qr_code_page_widget.dart' show QrCodePageWidget;
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class QrCodePageModel extends FlutterFlowModel<QrCodePageWidget> {
|
||||||
|
/// Local state fields for this page.
|
||||||
|
|
||||||
|
bool isAccess = false;
|
||||||
|
|
||||||
|
String? key;
|
||||||
|
|
||||||
|
DateTime? time;
|
||||||
|
|
||||||
|
/// State fields for stateful widgets in this page.
|
||||||
|
|
||||||
|
final unfocusNode = FocusNode();
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState(BuildContext context) {}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
unfocusNode.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Action blocks.
|
||||||
|
Future qrCodeEncoder(
|
||||||
|
BuildContext context, {
|
||||||
|
required String? key,
|
||||||
|
}) async {}
|
||||||
|
}
|
|
@ -0,0 +1,374 @@
|
||||||
|
import '/components/templates_components/qr_code_pass_key_template_component/qr_code_pass_key_template_component_widget.dart';
|
||||||
|
import '/flutter_flow/flutter_flow_animations.dart';
|
||||||
|
import '/flutter_flow/flutter_flow_icon_button.dart';
|
||||||
|
import '/flutter_flow/flutter_flow_theme.dart';
|
||||||
|
import '/flutter_flow/flutter_flow_util.dart';
|
||||||
|
import '/flutter_flow/flutter_flow_widgets.dart';
|
||||||
|
import 'dart:async';
|
||||||
|
import '/flutter_flow/custom_functions.dart' as functions;
|
||||||
|
import 'package:barcode_widget/barcode_widget.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/scheduler.dart';
|
||||||
|
import 'package:flutter_animate/flutter_animate.dart';
|
||||||
|
import 'package:google_fonts/google_fonts.dart';
|
||||||
|
import 'package:percent_indicator/percent_indicator.dart';
|
||||||
|
import 'qr_code_page_model.dart';
|
||||||
|
export 'qr_code_page_model.dart';
|
||||||
|
|
||||||
|
class QrCodePageWidget extends StatefulWidget {
|
||||||
|
const QrCodePageWidget({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<QrCodePageWidget> createState() => _QrCodePageWidgetState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _QrCodePageWidgetState extends State<QrCodePageWidget>
|
||||||
|
with TickerProviderStateMixin {
|
||||||
|
late QrCodePageModel _model;
|
||||||
|
|
||||||
|
final scaffoldKey = GlobalKey<ScaffoldState>();
|
||||||
|
|
||||||
|
final animationsMap = <String, AnimationInfo>{};
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
_model = createModel(context, () => QrCodePageModel());
|
||||||
|
|
||||||
|
// On page load action.
|
||||||
|
SchedulerBinding.instance.addPostFrameCallback((_) async {
|
||||||
|
if (animationsMap['barcodeOnActionTriggerAnimation'] != null) {
|
||||||
|
animationsMap['barcodeOnActionTriggerAnimation']!.controller.repeat();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
animationsMap.addAll({
|
||||||
|
'barcodeOnActionTriggerAnimation': AnimationInfo(
|
||||||
|
trigger: AnimationTrigger.onActionTrigger,
|
||||||
|
applyInitialState: true,
|
||||||
|
effectsBuilder: () => [
|
||||||
|
VisibilityEffect(duration: 1.ms),
|
||||||
|
BlurEffect(
|
||||||
|
curve: Curves.linear,
|
||||||
|
delay: 0.0.ms,
|
||||||
|
duration: 600.0.ms,
|
||||||
|
begin: const Offset(0.0, 0.0),
|
||||||
|
end: const Offset(4.0, 4.0),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
});
|
||||||
|
setupAnimations(
|
||||||
|
animationsMap.values.where((anim) =>
|
||||||
|
anim.trigger == AnimationTrigger.onActionTrigger ||
|
||||||
|
!anim.applyInitialState),
|
||||||
|
this,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
_model.dispose();
|
||||||
|
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return GestureDetector(
|
||||||
|
onTap: () => _model.unfocusNode.canRequestFocus
|
||||||
|
? FocusScope.of(context).requestFocus(_model.unfocusNode)
|
||||||
|
: FocusScope.of(context).unfocus(),
|
||||||
|
child: Scaffold(
|
||||||
|
key: scaffoldKey,
|
||||||
|
backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
|
||||||
|
appBar: AppBar(
|
||||||
|
backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
|
||||||
|
automaticallyImplyLeading: false,
|
||||||
|
leading: FlutterFlowIconButton(
|
||||||
|
borderColor: Colors.transparent,
|
||||||
|
borderRadius: 30.0,
|
||||||
|
borderWidth: 1.0,
|
||||||
|
buttonSize: 60.0,
|
||||||
|
icon: Icon(
|
||||||
|
Icons.keyboard_arrow_left,
|
||||||
|
color: FlutterFlowTheme.of(context).primaryText,
|
||||||
|
size: 30.0,
|
||||||
|
),
|
||||||
|
onPressed: () async {
|
||||||
|
context.pop();
|
||||||
|
},
|
||||||
|
),
|
||||||
|
title: Text(
|
||||||
|
FFLocalizations.of(context).getText(
|
||||||
|
'ku7jqe53' /* QR Code de Acesso */,
|
||||||
|
),
|
||||||
|
style: FlutterFlowTheme.of(context).headlineMedium.override(
|
||||||
|
fontFamily: FlutterFlowTheme.of(context).headlineMediumFamily,
|
||||||
|
color: FlutterFlowTheme.of(context).primaryText,
|
||||||
|
fontSize: 16.0,
|
||||||
|
letterSpacing: 0.0,
|
||||||
|
useGoogleFonts: GoogleFonts.asMap().containsKey(
|
||||||
|
FlutterFlowTheme.of(context).headlineMediumFamily),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
actions: const [],
|
||||||
|
centerTitle: true,
|
||||||
|
elevation: 0.0,
|
||||||
|
),
|
||||||
|
body: SafeArea(
|
||||||
|
top: true,
|
||||||
|
child: Column(
|
||||||
|
mainAxisSize: MainAxisSize.max,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
|
children: [
|
||||||
|
if (_model.isAccess == true)
|
||||||
|
Text(
|
||||||
|
FFLocalizations.of(context).getText(
|
||||||
|
'vd84zgfe' /* Use esse QR Code para acesso */,
|
||||||
|
),
|
||||||
|
style: FlutterFlowTheme.of(context).bodyMedium.override(
|
||||||
|
fontFamily:
|
||||||
|
FlutterFlowTheme.of(context).bodyMediumFamily,
|
||||||
|
fontSize: 20.0,
|
||||||
|
letterSpacing: 0.0,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
useGoogleFonts: GoogleFonts.asMap().containsKey(
|
||||||
|
FlutterFlowTheme.of(context).bodyMediumFamily),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Stack(
|
||||||
|
children: [
|
||||||
|
Align(
|
||||||
|
alignment: const AlignmentDirectional(0.0, 0.0),
|
||||||
|
child: BarcodeWidget(
|
||||||
|
data: 'Barcode',
|
||||||
|
barcode: Barcode.qrCode(),
|
||||||
|
width: 300.0,
|
||||||
|
height: 200.0,
|
||||||
|
color: FlutterFlowTheme.of(context).primaryText,
|
||||||
|
backgroundColor: Colors.transparent,
|
||||||
|
errorBuilder: (context, error) => const SizedBox(
|
||||||
|
width: 300.0,
|
||||||
|
height: 200.0,
|
||||||
|
),
|
||||||
|
drawText: false,
|
||||||
|
).animateOnActionTrigger(
|
||||||
|
animationsMap['barcodeOnActionTriggerAnimation']!,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
if (_model.isAccess == true)
|
||||||
|
Align(
|
||||||
|
alignment: const AlignmentDirectional(0.0, 0.0),
|
||||||
|
child: InkWell(
|
||||||
|
splashColor: Colors.transparent,
|
||||||
|
focusColor: Colors.transparent,
|
||||||
|
hoverColor: Colors.transparent,
|
||||||
|
highlightColor: Colors.transparent,
|
||||||
|
onLongPress: () async {
|
||||||
|
await _model.qrCodeEncoder(
|
||||||
|
context,
|
||||||
|
key: _model.key,
|
||||||
|
);
|
||||||
|
setState(() {});
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
width: 200.0,
|
||||||
|
height: 200.0,
|
||||||
|
decoration: const BoxDecoration(),
|
||||||
|
child: Align(
|
||||||
|
alignment: const AlignmentDirectional(0.0, 0.0),
|
||||||
|
child: FFButtonWidget(
|
||||||
|
onPressed: () async {
|
||||||
|
await showModalBottomSheet(
|
||||||
|
isScrollControlled: true,
|
||||||
|
backgroundColor: Colors.transparent,
|
||||||
|
useSafeArea: true,
|
||||||
|
context: context,
|
||||||
|
builder: (context) {
|
||||||
|
return GestureDetector(
|
||||||
|
onTap: () => _model
|
||||||
|
.unfocusNode.canRequestFocus
|
||||||
|
? FocusScope.of(context)
|
||||||
|
.requestFocus(_model.unfocusNode)
|
||||||
|
: FocusScope.of(context).unfocus(),
|
||||||
|
child: Padding(
|
||||||
|
padding:
|
||||||
|
MediaQuery.viewInsetsOf(context),
|
||||||
|
child:
|
||||||
|
QrCodePassKeyTemplateComponentWidget(
|
||||||
|
toggleActionStatus: (key) async {
|
||||||
|
_model.key = key;
|
||||||
|
setState(() {});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
).then((value) => safeSetState(() {}));
|
||||||
|
|
||||||
|
unawaited(
|
||||||
|
() async {
|
||||||
|
await _model.qrCodeEncoder(
|
||||||
|
context,
|
||||||
|
key: _model.key,
|
||||||
|
);
|
||||||
|
setState(() {});
|
||||||
|
}(),
|
||||||
|
);
|
||||||
|
if (animationsMap[
|
||||||
|
'barcodeOnActionTriggerAnimation'] !=
|
||||||
|
null) {
|
||||||
|
animationsMap[
|
||||||
|
'barcodeOnActionTriggerAnimation']!
|
||||||
|
.controller
|
||||||
|
.reverse();
|
||||||
|
}
|
||||||
|
if (animationsMap[
|
||||||
|
'barcodeOnActionTriggerAnimation'] !=
|
||||||
|
null) {
|
||||||
|
animationsMap[
|
||||||
|
'barcodeOnActionTriggerAnimation']!
|
||||||
|
.controller
|
||||||
|
.stop();
|
||||||
|
}
|
||||||
|
_model.isAccess = !_model.isAccess;
|
||||||
|
setState(() {});
|
||||||
|
},
|
||||||
|
text: FFLocalizations.of(context).getText(
|
||||||
|
'mxdrsbmy' /* Liberar QR Code */,
|
||||||
|
),
|
||||||
|
options: FFButtonOptions(
|
||||||
|
height: 40.0,
|
||||||
|
padding: const EdgeInsetsDirectional.fromSTEB(
|
||||||
|
24.0, 0.0, 24.0, 0.0),
|
||||||
|
iconPadding: const EdgeInsetsDirectional.fromSTEB(
|
||||||
|
0.0, 0.0, 0.0, 0.0),
|
||||||
|
color: FlutterFlowTheme.of(context).primary,
|
||||||
|
textStyle: FlutterFlowTheme.of(context)
|
||||||
|
.titleSmall
|
||||||
|
.override(
|
||||||
|
fontFamily: FlutterFlowTheme.of(context)
|
||||||
|
.titleSmallFamily,
|
||||||
|
color: Colors.white,
|
||||||
|
letterSpacing: 0.0,
|
||||||
|
useGoogleFonts: GoogleFonts.asMap()
|
||||||
|
.containsKey(
|
||||||
|
FlutterFlowTheme.of(context)
|
||||||
|
.titleSmallFamily),
|
||||||
|
),
|
||||||
|
elevation: 3.0,
|
||||||
|
borderSide: const BorderSide(
|
||||||
|
color: Colors.transparent,
|
||||||
|
width: 1.0,
|
||||||
|
),
|
||||||
|
borderRadius: BorderRadius.circular(8.0),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
if (_model.isAccess == true)
|
||||||
|
Container(
|
||||||
|
width: 300.0,
|
||||||
|
decoration: const BoxDecoration(),
|
||||||
|
child: Visibility(
|
||||||
|
visible: _model.isAccess == true,
|
||||||
|
child: Text(
|
||||||
|
FFLocalizations.of(context).getText(
|
||||||
|
'6z6kvmhl' /* Certifique-se de que o QRCode ... */,
|
||||||
|
),
|
||||||
|
style: FlutterFlowTheme.of(context).bodyMedium.override(
|
||||||
|
fontFamily:
|
||||||
|
FlutterFlowTheme.of(context).bodyMediumFamily,
|
||||||
|
letterSpacing: 0.0,
|
||||||
|
useGoogleFonts: GoogleFonts.asMap().containsKey(
|
||||||
|
FlutterFlowTheme.of(context).bodyMediumFamily),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
if (_model.isAccess == true)
|
||||||
|
Container(
|
||||||
|
width: 250.0,
|
||||||
|
height: 80.0,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.circular(100.0),
|
||||||
|
border: Border.all(
|
||||||
|
color: FlutterFlowTheme.of(context).primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: Row(
|
||||||
|
mainAxisSize: MainAxisSize.max,
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsetsDirectional.fromSTEB(
|
||||||
|
10.0, 0.0, 0.0, 0.0),
|
||||||
|
child: Text(
|
||||||
|
FFLocalizations.of(context).getText(
|
||||||
|
'wkjkxd2e' /* Trocando QR code em */,
|
||||||
|
),
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: FlutterFlowTheme.of(context)
|
||||||
|
.bodyMedium
|
||||||
|
.override(
|
||||||
|
fontFamily: FlutterFlowTheme.of(context)
|
||||||
|
.bodyMediumFamily,
|
||||||
|
letterSpacing: 0.0,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
useGoogleFonts: GoogleFonts.asMap()
|
||||||
|
.containsKey(FlutterFlowTheme.of(context)
|
||||||
|
.bodyMediumFamily),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Align(
|
||||||
|
alignment: const AlignmentDirectional(0.0, 0.0),
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsetsDirectional.fromSTEB(
|
||||||
|
0.0, 0.0, 20.0, 0.0),
|
||||||
|
child: CircularPercentIndicator(
|
||||||
|
percent: functions.getProgressValue(1),
|
||||||
|
radius: 30.0,
|
||||||
|
lineWidth: 7.0,
|
||||||
|
animation: true,
|
||||||
|
animateFromLastPercent: true,
|
||||||
|
progressColor: FlutterFlowTheme.of(context).primary,
|
||||||
|
backgroundColor:
|
||||||
|
FlutterFlowTheme.of(context).primaryText,
|
||||||
|
center: Text(
|
||||||
|
FFLocalizations.of(context).getText(
|
||||||
|
'3bfr2tjr' /* 20 */,
|
||||||
|
),
|
||||||
|
style: FlutterFlowTheme.of(context)
|
||||||
|
.headlineSmall
|
||||||
|
.override(
|
||||||
|
fontFamily: FlutterFlowTheme.of(context)
|
||||||
|
.headlineSmallFamily,
|
||||||
|
fontSize: 14.0,
|
||||||
|
letterSpacing: 0.0,
|
||||||
|
useGoogleFonts: GoogleFonts.asMap()
|
||||||
|
.containsKey(
|
||||||
|
FlutterFlowTheme.of(context)
|
||||||
|
.headlineSmallFamily),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
startAngle: 20.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -95,6 +95,7 @@ class _RegisterVisitorPageWidgetState extends State<RegisterVisitorPageWidget> {
|
||||||
),
|
),
|
||||||
actions: const [],
|
actions: const [],
|
||||||
centerTitle: true,
|
centerTitle: true,
|
||||||
|
elevation: 0.0,
|
||||||
),
|
),
|
||||||
body: SafeArea(
|
body: SafeArea(
|
||||||
top: true,
|
top: true,
|
||||||
|
|
|
@ -148,6 +148,7 @@ class _ScheduleCompleteVisitPageWidgetState
|
||||||
),
|
),
|
||||||
actions: const [],
|
actions: const [],
|
||||||
centerTitle: true,
|
centerTitle: true,
|
||||||
|
elevation: 0.0,
|
||||||
),
|
),
|
||||||
body: SafeArea(
|
body: SafeArea(
|
||||||
top: true,
|
top: true,
|
||||||
|
@ -253,6 +254,7 @@ class _ScheduleCompleteVisitPageWidgetState
|
||||||
.visitorJsonList
|
.visitorJsonList
|
||||||
.map((e) => e)
|
.map((e) => e)
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
return ListView.separated(
|
return ListView.separated(
|
||||||
padding: const EdgeInsets.fromLTRB(
|
padding: const EdgeInsets.fromLTRB(
|
||||||
0,
|
0,
|
||||||
|
@ -1556,6 +1558,7 @@ class _ScheduleCompleteVisitPageWidgetState
|
||||||
}
|
}
|
||||||
final dropDownGetDadosResponse =
|
final dropDownGetDadosResponse =
|
||||||
snapshot.data!;
|
snapshot.data!;
|
||||||
|
|
||||||
return FlutterFlowDropDown<
|
return FlutterFlowDropDown<
|
||||||
String>(
|
String>(
|
||||||
controller: _model
|
controller: _model
|
||||||
|
@ -1729,6 +1732,7 @@ class _ScheduleCompleteVisitPageWidgetState
|
||||||
}
|
}
|
||||||
final dropDownGetDadosResponse =
|
final dropDownGetDadosResponse =
|
||||||
snapshot.data!;
|
snapshot.data!;
|
||||||
|
|
||||||
return FlutterFlowDropDown<
|
return FlutterFlowDropDown<
|
||||||
String>(
|
String>(
|
||||||
controller: _model
|
controller: _model
|
||||||
|
@ -2287,6 +2291,7 @@ class _ScheduleCompleteVisitPageWidgetState
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
final wrapGetVisitsResponse = snapshot.data!;
|
final wrapGetVisitsResponse = snapshot.data!;
|
||||||
|
|
||||||
return Builder(
|
return Builder(
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
final visitaWrap = PhpGroup.getVisitsCall
|
final visitaWrap = PhpGroup.getVisitsCall
|
||||||
|
@ -2295,6 +2300,7 @@ class _ScheduleCompleteVisitPageWidgetState
|
||||||
)
|
)
|
||||||
?.toList() ??
|
?.toList() ??
|
||||||
[];
|
[];
|
||||||
|
|
||||||
return Wrap(
|
return Wrap(
|
||||||
spacing: 2.0,
|
spacing: 2.0,
|
||||||
runSpacing: 1.0,
|
runSpacing: 1.0,
|
||||||
|
|
|
@ -89,7 +89,7 @@ class _ScheduleProvisionalVisitPageWidgetState
|
||||||
),
|
),
|
||||||
actions: const [],
|
actions: const [],
|
||||||
centerTitle: true,
|
centerTitle: true,
|
||||||
elevation: 2.0,
|
elevation: 0.0,
|
||||||
),
|
),
|
||||||
body: SingleChildScrollView(
|
body: SingleChildScrollView(
|
||||||
child: Column(
|
child: Column(
|
||||||
|
|
|
@ -26,7 +26,9 @@ dependencies:
|
||||||
flutter_localizations:
|
flutter_localizations:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
auto_size_text: 3.0.0
|
auto_size_text: 3.0.0
|
||||||
|
barcode_widget: 2.0.3
|
||||||
cached_network_image: 3.3.1
|
cached_network_image: 3.3.1
|
||||||
|
carousel_slider: 4.2.1
|
||||||
collection: 1.18.0
|
collection: 1.18.0
|
||||||
crop_your_image: 1.0.0
|
crop_your_image: 1.0.0
|
||||||
csv: 6.0.0
|
csv: 6.0.0
|
||||||
|
@ -65,6 +67,7 @@ dependencies:
|
||||||
path_provider_android: 2.2.5
|
path_provider_android: 2.2.5
|
||||||
path_provider_foundation: 2.4.0
|
path_provider_foundation: 2.4.0
|
||||||
path_provider_platform_interface: 2.1.2
|
path_provider_platform_interface: 2.1.2
|
||||||
|
percent_indicator: 4.2.2
|
||||||
plugin_platform_interface: 2.1.8
|
plugin_platform_interface: 2.1.8
|
||||||
provider: 6.1.2
|
provider: 6.1.2
|
||||||
shared_preferences: 2.2.2
|
shared_preferences: 2.2.2
|
||||||
|
|
Loading…
Reference in New Issue