import 'package:flutter/material.dart'; import 'package:mymuseum_visitapp/Models/visitContext.dart'; import 'package:mymuseum_visitapp/app_context.dart'; import 'package:mymuseum_visitapp/constants.dart'; import 'package:provider/provider.dart'; import '../Helpers/DatabaseHelper.dart'; class LanguageSelection extends StatefulWidget { const LanguageSelection(); @override _LanguageSelection createState() => _LanguageSelection(); } class _LanguageSelection extends State with TickerProviderStateMixin { List? languagesEnable; double flagSize = 60; String? selectedLanguage; double? elementMinimizedSize; @override Widget build(BuildContext context) { final appContext = Provider.of(context); Size size = MediaQuery.of(context).size; var configurationLanguages = (appContext.getContext() as VisitAppContext).configuration?.languages; print(configurationLanguages); languagesEnable = configurationLanguages ?? languages; selectedLanguage = (appContext.getContext() as VisitAppContext).language; if(!languagesEnable!.any((lg) => lg == selectedLanguage)) { print("selectedLanguage not supported"); selectedLanguage = defaultLanguage; } print(selectedLanguage); return PopupMenuButton( icon: Container( height: size.height *0.07, width: size.width *0.07, decoration: flagDecoration(selectedLanguage!), ), itemBuilder: (context){ int i = 0; List menuItems = []; for(var language in languagesEnable!) { menuItems.add(PopupMenuItem( value: i, child: Center( child: Container( width: size.width *0.07, height: size.width *0.07, decoration: flagDecoration(language), ) ), )); i = i+1; } return menuItems; }, onSelected:(value) async { // Update App context + update local DB VisitAppContext visitAppContext = appContext.getContext(); visitAppContext.language = languagesEnable![int.parse(value.toString())]; appContext.setContext(visitAppContext); print(visitAppContext); print("onSelectedonSelectedonSelected"); // Update local DB await DatabaseHelper.instance.insert(DatabaseTableType.main, visitAppContext.toMap()); /*if(value == 0){ print("My account menu is selected."); }else if(value == 1){ print("Settings menu is selected."); }else if(value == 2){ print("Logout menu is selected."); }*/ } ); } flagDecoration(String language) { return BoxDecoration( color: kBackgroundColor, shape: BoxShape.circle, //border: Border.all(width: 1.5, color: kSecondGrey), image: DecorationImage( fit: BoxFit.contain, image: AssetImage("assets/images/"+language+".png"), ), boxShadow: const [ BoxShadow( color: kSecondGrey, spreadRadius: 0.5, blurRadius: 5, offset: Offset(0, 1.5), // changes position of shadow ), ], ); } }