Adição: Criado um TabViewUtil, criada a pagina de pets e adicionado o Tab e o Appbar
This commit is contained in:
parent
ae0fe2f75f
commit
90ae49df06
|
@ -0,0 +1,74 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:hub/flutter_flow/flutter_flow_theme.dart';
|
||||
|
||||
class TabViewUtil extends StatelessWidget {
|
||||
final BuildContext context;
|
||||
final dynamic model;
|
||||
String labelTab1;
|
||||
String labelTab2;
|
||||
final TabController controller;
|
||||
Widget widget1;
|
||||
Widget widget2;
|
||||
|
||||
TabViewUtil({
|
||||
super.key,
|
||||
required this.context,
|
||||
required this.model,
|
||||
required this.labelTab1,
|
||||
required this.labelTab2,
|
||||
required this.controller,
|
||||
required this.widget1,
|
||||
required this.widget2,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SafeArea(
|
||||
top: true,
|
||||
child: Column(
|
||||
children: [
|
||||
Align(
|
||||
alignment: const Alignment(0.0, 0),
|
||||
child: TabBar(
|
||||
labelColor: FlutterFlowTheme.of(context).primaryText,
|
||||
unselectedLabelColor: FlutterFlowTheme.of(context).primaryText,
|
||||
labelStyle: FlutterFlowTheme.of(context).titleMedium.override(
|
||||
fontFamily: FlutterFlowTheme.of(context).titleMediumFamily,
|
||||
fontSize: 13.0,
|
||||
letterSpacing: 0.0,
|
||||
useGoogleFonts: GoogleFonts.asMap().containsKey(
|
||||
FlutterFlowTheme.of(context).titleMediumFamily),
|
||||
),
|
||||
unselectedLabelStyle: const TextStyle(),
|
||||
indicatorColor: FlutterFlowTheme.of(context).primary,
|
||||
padding: const EdgeInsets.all(4.0),
|
||||
tabs: [
|
||||
Tab(
|
||||
text: labelTab1,
|
||||
),
|
||||
Tab(
|
||||
text: labelTab2,
|
||||
),
|
||||
],
|
||||
controller: controller,
|
||||
onTap: (i) async {
|
||||
[() async {}, () async {}][i]();
|
||||
},
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: TabBarView(
|
||||
controller: controller,
|
||||
children: [
|
||||
widget1,
|
||||
widget2,
|
||||
],
|
||||
),
|
||||
),
|
||||
// Adicione o conteúdo do TabBarView aqui
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
|
@ -356,4 +356,17 @@ class MenuComponentModel extends FlutterFlowModel<MenuComponentWidget> {
|
|||
},
|
||||
);
|
||||
}
|
||||
|
||||
Future petsAction(BuildContext context) async {
|
||||
context.push(
|
||||
'/petsPage',
|
||||
extra: <String, dynamic>{
|
||||
kTransitionInfoKey: const TransitionInfo(
|
||||
hasTransition: true,
|
||||
transitionType: PageTransitionType.scale,
|
||||
alignment: Alignment.bottomCenter,
|
||||
),
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -89,6 +89,17 @@ class _MenuComponentWidgetState extends State<MenuComponentWidget> {
|
|||
ptText: 'QRCode\nde Acesso',
|
||||
),
|
||||
),
|
||||
MenuButtonWidget(
|
||||
icon: Icons.pets,
|
||||
action: () async {
|
||||
await _model.petsAction(context);
|
||||
setState(() {});
|
||||
},
|
||||
title: FFLocalizations.of(context).getVariableText(
|
||||
enText: 'Pets\nRegister',
|
||||
ptText: 'Cadastro\nde Pet',
|
||||
),
|
||||
),
|
||||
MenuButtonWidget(
|
||||
icon: Icons.people,
|
||||
action: () async {
|
||||
|
@ -213,6 +224,17 @@ class _MenuComponentWidgetState extends State<MenuComponentWidget> {
|
|||
ptText: 'QRCode\nde Acesso',
|
||||
),
|
||||
),
|
||||
MenuButtonWidget(
|
||||
icon: Icons.pets,
|
||||
action: () async {
|
||||
await _model.petsAction(context);
|
||||
setState(() {});
|
||||
},
|
||||
title: FFLocalizations.of(context).getVariableText(
|
||||
enText: 'Pets\nRegister',
|
||||
ptText: 'Cadastro\nde Pet',
|
||||
),
|
||||
),
|
||||
MenuButtonWidget(
|
||||
icon: Icons.transfer_within_a_station_outlined,
|
||||
action: () async {
|
||||
|
@ -338,6 +360,17 @@ class _MenuComponentWidgetState extends State<MenuComponentWidget> {
|
|||
ptText: 'Encomendas',
|
||||
),
|
||||
),
|
||||
MenuButtonWidget(
|
||||
icon: Icons.pets,
|
||||
action: () async {
|
||||
await _model.petsAction(context);
|
||||
setState(() {});
|
||||
},
|
||||
title: FFLocalizations.of(context).getVariableText(
|
||||
enText: 'Pets\nRegister',
|
||||
ptText: 'Cadastro\nde Pet',
|
||||
),
|
||||
),
|
||||
MenuCardItem(
|
||||
icon: Icons.event_available,
|
||||
action: () async {
|
||||
|
@ -452,6 +485,17 @@ class _MenuComponentWidgetState extends State<MenuComponentWidget> {
|
|||
ptText: 'QRCode de Acesso',
|
||||
),
|
||||
),
|
||||
MenuCardItem(
|
||||
icon: Icons.pets,
|
||||
action: () async {
|
||||
await _model.petsAction(context);
|
||||
setState(() {});
|
||||
},
|
||||
title: FFLocalizations.of(context).getVariableText(
|
||||
enText: 'Pets Register',
|
||||
ptText: 'Cadastro de Pet',
|
||||
),
|
||||
),
|
||||
MenuCardItem(
|
||||
icon: Icons.transfer_within_a_station_outlined,
|
||||
action: () async {
|
||||
|
|
|
@ -6,6 +6,7 @@ import 'package:hub/pages/delivery_schedule_page/delivery_schedule_widget.dart';
|
|||
import 'package:hub/pages/fast_pass_page/fast_pass_page_widget.dart';
|
||||
import 'package:hub/pages/message_history_page/message_history_page_widget.dart';
|
||||
import 'package:hub/pages/package_order_page/package_order_page.dart';
|
||||
import 'package:hub/pages/pets_page/pets_page_widget.dart';
|
||||
import 'package:hub/pages/provisional_schedule_page/provisional_schedule_widget.dart';
|
||||
import 'package:hub/pages/reception_page/reception_page_widget.dart';
|
||||
import 'package:hub/pages/reservation_page/reservation_page_widget.dart';
|
||||
|
@ -197,6 +198,11 @@ GoRouter createRouter(AppStateNotifier appStateNotifier) => GoRouter(
|
|||
path: '/reservation',
|
||||
builder: (context, params) => ReservationPageWidget(),
|
||||
),
|
||||
FFRoute(
|
||||
name: 'petsPage',
|
||||
path: '/petsPage',
|
||||
builder: (context, params) => PetsPageWidget(),
|
||||
),
|
||||
// FFRoute(
|
||||
// name: 'settingsPage',
|
||||
// path: '/settingsPage',
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:hub/flutter_flow/flutter_flow_model.dart';
|
||||
import 'package:hub/pages/pets_page/pets_page_widget.dart';
|
||||
|
||||
class PetsPageModel extends FlutterFlowModel<PetsPageWidget> {
|
||||
late final TabController tabBarController;
|
||||
int get tabBarCurrentIndex =>
|
||||
tabBarController != null ? tabBarController!.index : 0;
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
tabBarController?.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
void initState(BuildContext context) {
|
||||
tabBarController = TabController(
|
||||
vsync: Navigator.of(context),
|
||||
length: 2,
|
||||
);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/scheduler.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:hub/components/atomic_components/shared_components_atoms/tabview.dart';
|
||||
import 'package:hub/flutter_flow/flutter_flow_icon_button.dart';
|
||||
import 'package:hub/flutter_flow/flutter_flow_model.dart';
|
||||
import 'package:hub/flutter_flow/flutter_flow_theme.dart';
|
||||
import 'package:hub/flutter_flow/flutter_flow_util.dart';
|
||||
import 'package:hub/flutter_flow/internationalization.dart';
|
||||
import 'package:hub/flutter_flow/nav/nav.dart';
|
||||
import 'package:hub/pages/pets_page/pets_page_model.dart';
|
||||
|
||||
class PetsPageWidget extends StatefulWidget {
|
||||
PetsPageWidget({super.key});
|
||||
|
||||
@override
|
||||
State<PetsPageWidget> createState() => _PetsPageWidgetState();
|
||||
}
|
||||
|
||||
class _PetsPageWidgetState extends State<PetsPageWidget>
|
||||
with SingleTickerProviderStateMixin {
|
||||
late PetsPageModel _model;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_model = PetsPageModel();
|
||||
_model.tabBarController = TabController(length: 2, vsync: this);
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_model.tabBarController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: appBarPetsPage(context),
|
||||
body: petsPageBody(context, _model, _model.tabBarController));
|
||||
}
|
||||
}
|
||||
|
||||
PreferredSizeWidget appBarPetsPage(BuildContext context) {
|
||||
return AppBar(
|
||||
backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
|
||||
automaticallyImplyLeading: false,
|
||||
forceMaterialTransparency: true,
|
||||
elevation: 0.0,
|
||||
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)
|
||||
.getVariableText(ptText: 'Pets', enText: 'Pets'),
|
||||
style: FlutterFlowTheme.of(context).headlineMedium.override(
|
||||
fontFamily: 'Nunito',
|
||||
color: FlutterFlowTheme.of(context).primaryText,
|
||||
fontSize: 15.0,
|
||||
letterSpacing: 0.0,
|
||||
fontWeight: FontWeight.bold,
|
||||
useGoogleFonts: GoogleFonts.asMap().containsKey('Nunito'),
|
||||
),
|
||||
),
|
||||
actions: const [],
|
||||
centerTitle: true,
|
||||
);
|
||||
}
|
||||
|
||||
Widget petsPageBody(BuildContext context, PetsPageModel _model, controller) {
|
||||
return TabViewUtil(
|
||||
context: context,
|
||||
model: _model,
|
||||
labelTab1: 'Cadastrar',
|
||||
labelTab2: 'Consultar',
|
||||
controller: controller,
|
||||
widget1: Center(child: Text('Cadastrar')),
|
||||
widget2: Center(child: Text('Consultar')),
|
||||
);
|
||||
}
|
24
pubspec.lock
24
pubspec.lock
|
@ -825,18 +825,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker
|
||||
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
|
||||
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "10.0.5"
|
||||
version: "10.0.4"
|
||||
leak_tracker_flutter_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker_flutter_testing
|
||||
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
|
||||
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.5"
|
||||
version: "3.0.3"
|
||||
leak_tracker_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -913,10 +913,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: material_color_utilities
|
||||
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
|
||||
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.11.1"
|
||||
version: "0.8.0"
|
||||
material_symbols_icons:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -937,10 +937,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: meta
|
||||
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
|
||||
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.15.0"
|
||||
version: "1.12.0"
|
||||
mime:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1358,10 +1358,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: test_api
|
||||
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
|
||||
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.2"
|
||||
version: "0.7.0"
|
||||
timeago:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -1526,10 +1526,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: vm_service
|
||||
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
|
||||
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "14.2.5"
|
||||
version: "14.2.1"
|
||||
web:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
Loading…
Reference in New Issue