import 'package:app/gapi/client.dart'; import 'package:app/model/apis/api_response.dart'; import 'package:app/model/view_model/account_vm.dart'; import 'package:app/pages/dashboard_page.dart'; import 'package:app/pages/login_page.dart'; import 'package:app/pages/register_page.dart'; import 'package:app/pb/account.pb.dart'; import 'package:app/widgets/background.dart'; import 'package:app/widgets/bottom_bar.dart'; import 'package:app/widgets/side_drawer.dart'; import 'package:flutter/material.dart'; import 'dart:core'; import 'package:provider/provider.dart'; // ignore: must_be_immutable class StartPage extends StatefulWidget { const StartPage({ super.key, // required this.client, }); // GClient client; @override State createState() => _StartPageState(); } class _StartPageState extends State { final List bottombarButtons = []; // void _updateClient(GClient c) { // setState(() { // widget.client = c; // }); // } @override void initState() { super.initState(); } SnackBar _snackBar(BuildContext context, String message, String label, void Function() action) { ScaffoldMessenger.of(context).removeCurrentSnackBar(); // ScaffoldMessenger.of(context).clearSnackBars(); return SnackBar( content: Text( message, style: const TextStyle(color: Colors.black), ), backgroundColor: Colors.white, action: SnackBarAction( label: label, onPressed: action, ), ); } @override Widget build(BuildContext context) { return Background( child: ChangeNotifierProvider( create: (context) => AccountViewModel(), child: Consumer(builder: (context, value, child) { return Scaffold( appBar: AppBar( automaticallyImplyLeading: false, ), drawer: Builder(builder: (context) { return SideDrawer(children: [ const Spacer(), TextButton( onPressed: () { Scaffold.of(context).closeDrawer(); }, child: const Row( children: [ Text( 'About', style: TextStyle(fontSize: 20), ), Spacer(), Icon( Icons.question_answer, color: Colors.white, ), ], ), ), TextButton( onPressed: () { Scaffold.of(context).closeDrawer(); }, child: const Row( children: [ Text( 'Datenschutz', style: TextStyle(fontSize: 20), ), Spacer(), Icon( Icons.privacy_tip, color: Colors.white, ), ], ), ), TextButton( onPressed: () { Scaffold.of(context).closeDrawer(); }, child: const Row( children: [ Text( 'Impressum', style: TextStyle(fontSize: 20), ), Spacer(), Icon( Icons.apartment, color: Colors.white, ), ], ), ), TextButton( onPressed: () { value.logout(); // ScaffoldMessenger.of(context).clearSnackBars(); ScaffoldMessenger.of(context).showSnackBar( _snackBar( context, value.response.message != null ? value.response.message! : value.response.status.toString(), value.response.status.toString(), () { print('asdf'); }, ), ); }, child: const Row( children: [ Text( 'Log out', style: TextStyle(fontSize: 20), ), Spacer(), Icon( Icons.logout, color: Colors.white, ), ], ), ), const SizedBox( height: 250, ) ]); }), bottomNavigationBar: Builder(builder: (context) { return BottomBar( // onTap: (value) => _bottomBarAction(value), children: value.response.data != null ? [ BottomNavigationBarItem( backgroundColor: Colors.white, label: 'Personen', icon: Column( children: [ IconButton( onPressed: () => Scaffold.of(context).openDrawer(), icon: const Icon( Icons.group, color: Colors.white, ), ), const Text( 'Personen', style: TextStyle( color: Colors.white, fontSize: 16, ), ) ], ), ), BottomNavigationBarItem( backgroundColor: Colors.white, label: 'Dashboard', icon: Column( children: [ IconButton( onPressed: () {}, icon: const Icon( Icons.dashboard, color: Colors.white, ), ), const Text( 'Dashboard', style: TextStyle( color: Colors.white, fontSize: 16, ), ) ], ), ), BottomNavigationBarItem( backgroundColor: Colors.white, label: 'Menu', icon: IconButton( onPressed: () { Scaffold.of(context).openDrawer(); }, icon: const Icon( Icons.menu, color: Colors.white, ), ), ) ] : [ BottomNavigationBarItem( label: 'register', backgroundColor: Colors.white, icon: Column( children: [ IconButton( onPressed: () {}, icon: const Icon( Icons.login, color: Colors.white, ), ), const Text( 'Registrieren', style: TextStyle( color: Colors.white, fontSize: 16, ), ) ], ), ), BottomNavigationBarItem( label: 'login', backgroundColor: Colors.white, icon: Column( children: [ IconButton( onPressed: () { Navigator.push( context, MaterialPageRoute( builder: (builder) => const LoginPage())); }, icon: const Icon( Icons.login, color: Colors.white, ), ), const Text( 'Login', style: TextStyle( color: Colors.white, fontSize: 16, ), ) ], ), ), BottomNavigationBarItem( backgroundColor: Colors.white, label: 'Menu', icon: IconButton( onPressed: () => Scaffold.of(context).openDrawer(), icon: const Icon( Icons.menu, color: Colors.white, ), ), ), ], ); }), body: Column( children: [ if (value.response.status == Status.COMPLETED && value.response.data != null && !(value.response.data as Account).emailVerified) Card( color: Colors.orange, child: Center( child: Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ const Text( 'E-Mail ist noch nicht verifiziert.', style: TextStyle( fontWeight: FontWeight.bold, fontFamily: 'sans-serif', fontSize: 14), ), IconButton( onPressed: () {}, icon: const Icon( Icons.restore, color: Colors.white, ), ), ], ), ), ), Padding( padding: const EdgeInsets.all(16.0), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ const Image( image: AssetImage( 'lib/assets/logo_300x200.png', ), ), const SizedBox( height: 40, ), Text( 'Digitale Spuren auf Knopfdruck entfernen' .toUpperCase(), textAlign: TextAlign.center, style: const TextStyle( fontFamily: 'sans-serif', fontSize: 24, height: 1.6, fontWeight: FontWeight.normal, letterSpacing: 6, ), ), TextButton( onPressed: () { // ScaffoldMessenger.of(context).clearSnackBars(); ScaffoldMessenger.of(context).showSnackBar( _snackBar( context, value.response.message != null ? value.response.message! : value.response.status.toString(), value.response.status.toString(), () { print('asdf'); }, ), ); }, child: const Text('asdf')) ], ), ), ], ), ); }), ), ); } }