import 'package:flutter/material.dart'; import 'package:flutter_widget_from_html/flutter_widget_from_html.dart'; import 'package:mymuseum_visitapp/Components/AdminPopup.dart'; import 'package:mymuseum_visitapp/Components/LanguageSelection.dart'; import 'package:mymuseum_visitapp/Models/visitContext.dart'; import 'package:mymuseum_visitapp/Screens/Home/home.dart'; import 'package:mymuseum_visitapp/app_context.dart'; import 'package:mymuseum_visitapp/constants.dart'; import 'package:provider/provider.dart'; class CustomAppBar extends StatefulWidget implements PreferredSizeWidget { CustomAppBar({Key? key, required this.title, required this.isHomeButton, this.isTextSizeButton}); final String title; final bool isHomeButton; bool? isTextSizeButton = false; final double _preferredHeight = 50; @override State createState() => _CustomAppBarState(); @override Size get preferredSize => Size.fromHeight(_preferredHeight); } class _CustomAppBarState extends State { @override Widget build(BuildContext context) { final appContext = Provider.of(context); VisitAppContext visitAppContext = appContext.getContext(); Size size = MediaQuery.of(context).size; //final notchInset = MediaQuery.of(context).padding; return AppBar( shadowColor: kMainColor1, title: InkWell( onLongPress: () { showDialog( builder: (BuildContext context) => const AlertDialog( shape: RoundedRectangleBorder( borderRadius: BorderRadius.all(Radius.circular(10.0)) ), content: AdminPopup(), contentPadding: EdgeInsets.zero, ), context: context ); }, child: SizedBox( width: widget.isHomeButton ? size.width * 0.8 : null, child: HtmlWidget( widget.title, textStyle: const TextStyle(color: Colors.white), customStylesBuilder: (element) { return {'text-align': 'center', 'font-family': "Roboto", '-webkit-line-clamp': "2",}; } ), ), ), centerTitle: true, leading: widget.isHomeButton ? IconButton( icon: const Icon(Icons.home, color: Colors.white), onPressed: () { // Set new State setState(() { visitAppContext.configuration = null; visitAppContext.isScanningBeacons = false; //Navigator.of(context).pop(); Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute( builder: (context) => const HomePage(), ),(route) => false); }); } ) : null, actions: [ if(widget.isTextSizeButton != null && widget.isTextSizeButton!) InkWell( onTap: () { setState(() { visitAppContext.isMaximizeTextSize = !visitAppContext.isMaximizeTextSize; appContext.setContext(visitAppContext); }); }, child: SizedBox( width: 50, child: visitAppContext.isMaximizeTextSize ? const Icon(Icons.text_fields, color: Colors.white) : const Icon(Icons.format_size, color: Colors.white) ), ), Padding( padding: const EdgeInsets.only(right: 5.0), child: SizedBox( width: 50, height: 50, child: LanguageSelection() ) ), ], flexibleSpace: Container( decoration: const BoxDecoration( gradient: LinearGradient( begin: Alignment.centerRight, end: Alignment.centerLeft, colors: [ /*Color(0xFFDD79C2), Color(0xFFB65FBE), Color(0xFF9146BA), Color(0xFF7633B8), Color(0xFF6528B6), Color(0xFF6025B6)*/ Color(0xFFf6b3c4), kMainColor1, kMainColor2, ], ), ), ), ); } }