import '../backend/api_requests/api_calls.dart'; import '../department_highlights_page/department_highlights_page_widget.dart'; import '../flutter_flow/flutter_flow_theme.dart'; import '../flutter_flow/flutter_flow_util.dart'; import '../search_results_page/search_results_page_widget.dart'; import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart';
class HomePageWidget extends StatefulWidget { const HomePageWidget({Key key}) : super(key: key);
@override _HomePageWidgetState createState() => _HomePageWidgetState(); }
class _HomePageWidgetState extends State<HomePageWidget> { TextEditingController textController; final scaffoldKey = GlobalKey<ScaffoldState>();
@override void initState() { super.initState(); textController = TextEditingController(); }
@override Widget build(BuildContext context) { return Scaffold( key: scaffoldKey, backgroundColor: FlutterFlowTheme.of(context).secondaryColor, body: SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.max, children: [ Stack( children: [ Align( alignment: AlignmentDirectional(0, 0), child: Image.asset( 'assets/images/home_image.png', width: double.infinity, height: 255, fit: BoxFit.cover, ), ), Align( alignment: AlignmentDirectional(0, 0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB(20, 60, 20, 0), child: Column( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: EdgeInsetsDirectional.fromSTEB(0, 0, 0, 17), child: Image.asset( 'assets/images/logo_flutterMet_white.png', width: 120, fit: BoxFit.cover, ), ), Text( 'Your place for searching ART.', style: FlutterFlowTheme.of(context) .bodyText1 .override( fontFamily: 'Playfair Display', color: FlutterFlowTheme.of(context).secondaryColor, fontSize: 16, fontStyle: FontStyle.italic, ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB(0, 27, 0, 0), child: Container( width: double.infinity, height: 52, decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(8), ), child: Padding( padding: EdgeInsetsDirectional.fromSTEB(15, 0, 15, 0), child: Row( mainAxisSize: MainAxisSize.max, children: [ InkWell( onTap: () async { await Navigator.push( context, MaterialPageRoute( builder: (context) => SearchResultsPageWidget( searchTerm: textController.text, ), ), ); await GetDepartmentsCall.call(); }, child: Icon( Icons.search, color: FlutterFlowTheme.of(context) .tertiaryColor, size: 24, ), ), Expanded( child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 5, 0, 0, 2), child: TextFormField( controller: textController, obscureText: false, decoration: InputDecoration( hintText: 'Search artist, maker, department...', enabledBorder: UnderlineInputBorder( borderSide: BorderSide( color: Color(0x00000000), width: 1, ), borderRadius: const BorderRadius.only( topLeft: Radius.circular(4.0), topRight: Radius.circular(4.0), ), ), focusedBorder: UnderlineInputBorder( borderSide: BorderSide( color: Color(0x00000000), width: 1, ), borderRadius: const BorderRadius.only( topLeft: Radius.circular(4.0), topRight: Radius.circular(4.0), ), ), ), style: FlutterFlowTheme.of(context) .bodyText1 .override( fontFamily: 'Playfair Display', fontSize: 16, ), ), ), ), ], ), ), ), ), Align( alignment: AlignmentDirectional(-1, 0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB(10, 15, 0, 20), child: Text( 'Museum Departments', style: FlutterFlowTheme.of(context) .bodyText1 .override( fontFamily: 'Playfair Display', fontSize: 12, fontWeight: FontWeight.w600, ), ), ), ), FutureBuilder<ApiCallResponse>( future: GetDepartmentsCall.call(), builder: (context, snapshot) { if (!snapshot.hasData) { return Center( child: SizedBox( width: 50, height: 50, child: CircularProgressIndicator( color: FlutterFlowTheme.of(context) .primaryColor, ), ), ); } final gridViewGetDepartmentsResponse = snapshot.data; return Builder( builder: (context) { final departments = (getJsonField( (gridViewGetDepartmentsResponse ?.jsonBody ?? ''), r'''$.departments''', )?.toList() ?? []) .take(30) .toList(); return GridView.builder( padding: EdgeInsets.zero, gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, crossAxisSpacing: 10, mainAxisSpacing: 10, childAspectRatio: 1.6, ), primary: false, shrinkWrap: true, scrollDirection: Axis.vertical, itemCount: departments.length, itemBuilder: (context, departmentsIndex) { final departmentsItem = departments[departmentsIndex]; return InkWell( onTap: () async { await Navigator.push( context, MaterialPageRoute( builder: (context) => DepartmentHighlightsPageWidget( departmentId: getJsonField( departmentsItem, r'''$.departmentId''', ), displayName: getJsonField( departmentsItem, r'''$.displayName''', ).toString(), ), ), ); }, child: Card( clipBehavior: Clip.antiAliasWithSaveLayer, color: Colors.white, elevation: 4, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), ), child: Align( alignment: AlignmentDirectional(0, 0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 5, 0, 5, 0), child: Text( getJsonField( departmentsItem, r'''$.displayName''', ).toString(), textAlign: TextAlign.center, style: FlutterFlowTheme.of(context) .title1, ), ), ), ), ); }, ); }, ); }, ), ], ), ), ), ], ), ], ), ), ); } }
|