mymuseum-visitapp/lib/Components/CustomAppBar.dart
2024-07-04 21:04:24 +02:00

108 lines
3.7 KiB
Dart

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<CustomAppBar> createState() => _CustomAppBarState();
@override
Size get preferredSize => Size.fromHeight(_preferredHeight);
}
class _CustomAppBarState extends State<CustomAppBar> {
@override
Widget build(BuildContext context) {
final appContext = Provider.of<AppContext>(context);
VisitAppContext visitAppContext = appContext.getContext();
//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: HtmlWidget(widget.title, textStyle: TextStyle(color: Colors.white),),
),
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) : const Icon(Icons.format_size)
),
),
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)*/
kMainColor1,
kMainColor2,
],
),
),
),
);
}
}