mymuseum-visitapp/lib/Components/AdminPopup.dart
2023-05-02 15:26:48 +02:00

146 lines
5.3 KiB
Dart

import 'package:flutter/material.dart';
import 'package:mymuseum_visitapp/Components/check_input_container.dart';
import 'package:mymuseum_visitapp/Components/rounded_button.dart';
import 'package:mymuseum_visitapp/Helpers/DatabaseHelper.dart';
import 'package:mymuseum_visitapp/Helpers/translationHelper.dart';
import 'package:mymuseum_visitapp/Models/visitContext.dart';
import 'package:mymuseum_visitapp/app_context.dart';
import 'package:provider/provider.dart';
import '../constants.dart';
class AdminPopup extends StatefulWidget {
const AdminPopup({
Key? key,
}) : super(key: key);
@override
State<AdminPopup> createState() => _AdminPopupState();
}
class _AdminPopupState extends State<AdminPopup> {
final TextEditingController _controller = TextEditingController();
bool isPasswordOk = false;
String password = "FORT2023!";
VisitAppContext? visitAppContext;
@override
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
final appContext = Provider.of<AppContext>(context);
visitAppContext = appContext.getContext() as VisitAppContext;
isPasswordOk = visitAppContext!.isAdmin!;
return Container(
width: size.width*0.7,
height: isPasswordOk ? size.height*0.5 : size.height*0.15,
margin: const EdgeInsets.all(kDefaultPadding),
child: isPasswordOk ? Column(
children: [
SizedBox(
height: size.height*0.06,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: CheckInputContainer(label: "Mode admin", isChecked: visitAppContext!.isAdmin, onChanged: (value) {
visitAppContext!.isAdmin = value;
appContext.setContext(visitAppContext!);
DatabaseHelper.instance.updateTableMain(DatabaseTableType.main, visitAppContext!);
}),
),
),
SizedBox(
height: size.height*0.06,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: CheckInputContainer(label: "Langues", isChecked: visitAppContext!.isAllLanguages, onChanged: (value) {
visitAppContext!.isAllLanguages = value;
appContext.setContext(visitAppContext!);
DatabaseHelper.instance.updateTableMain(DatabaseTableType.main, visitAppContext!);
}),
),
),
const Text("Audios qui ne fonctionnent pas :"),
const SizedBox(
height: 15,
),
Container(
decoration: BoxDecoration(
shape: BoxShape.rectangle,
border: Border.all(width: 1.5, color: kSecondGrey),
borderRadius: BorderRadius.circular(10.0),
),
height: size.height*0.25,
width: size.width*0.7,
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
if(visitAppContext!.audiosNotWorking.isEmpty)
const Padding(
padding: EdgeInsets.all(8.0),
child: Text("Rien mais téléchargez la visite pour être sûr"),
),
if(visitAppContext!.audiosNotWorking.isNotEmpty)
for(var audio in visitAppContext!.audiosNotWorking)
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(audio.label!.isNotEmpty ? audio.label! : audio.id!),
)
],
)
),
),
SizedBox(
height: size.height*0.06,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: RoundedButton(
text: "Reset articles lu",
color: kBackgroundSecondGrey,
textColor: kBackgroundLight,
icon: Icons.refresh,
press: () {
DatabaseHelper.instance.clearTable(DatabaseTableType.articleRead);
visitAppContext!.readSections = [];
appContext.setContext(visitAppContext!);
},
fontSize: 18,
horizontal: 20,
vertical: 5
),
),
)
],
) :
Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text("Mot de passe admin"),
SizedBox(
width: size.width*0.65,
height: size.height *0.1,
child: TextFormField(
controller: _controller,
onChanged: (value) {
if(value == password) {
setState(() {
isPasswordOk = true;
visitAppContext!.isAdmin = true;
appContext.setContext(visitAppContext!);
DatabaseHelper.instance.updateTableMain(DatabaseTableType.main, visitAppContext!);
});
}
},
//style: const TextStyle(color: Colors.white),
obscureText: true,
enableSuggestions: false,
autocorrect: false,
),
),
],
),
);
}
}