import 'package:flutter/material.dart'; import 'package:mycore_api/api.dart'; import 'package:myhomie_app/Components/Alarms/getCurrentAlarmModeIcon.dart'; import 'package:myhomie_app/Components/loading_common.dart'; import 'package:myhomie_app/Models/homieContext.dart'; import 'package:myhomie_app/Screens/Main/Security/alarmDetailPage.dart'; import 'package:myhomie_app/Screens/Main/Security/changeAlarmMode.dart'; import 'package:myhomie_app/Screens/Main/Security/streamWidget.dart'; import 'package:myhomie_app/Screens/Main/Security/videoPlayerNetwork.dart'; import 'package:myhomie_app/app_context.dart'; import 'package:myhomie_app/constants.dart'; import 'package:provider/provider.dart'; class SecurityScreen extends StatefulWidget { SecurityScreen({Key? key}) : super(key: key); @override _SecurityScreenState createState() => _SecurityScreenState(); } class _SecurityScreenState extends State { bool isLoading = true; List? allAlarmModes; AlarmModeDTO? currentAlarmMode; @override void initState() { super.initState(); } @override Widget build(BuildContext context) { Size size = MediaQuery.of(context).size; final appContext = Provider.of(context); HomieAppContext homieAppContext = appContext.getContext(); return RefreshIndicator( color: Theme.of(context).primaryColor, displacement: 20, onRefresh: () async { print("TODO refresh"); //await Message.getMessages(this.messages, appContext, true, true); }, child: Container( height: size.height * 0.842, //child: SingleChildScrollView( child: Column( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ FutureBuilder( future: homieAppContext.clientAPI.alarmApi!.alarmGetAll(homieAppContext.homeId!), builder: (context, AsyncSnapshot?> snapshot) { if (snapshot.connectionState == ConnectionState.done) { allAlarmModes = snapshot.data; currentAlarmMode = allAlarmModes!.where((am) => am.activated!).first; return Padding( padding: const EdgeInsets.all(8.0), child: Center( child: Container( width: size.width * 0.6, height: size.height * 0.1, decoration: alarmDecoration(currentAlarmMode!), child: InkWell( onTap: () async { var result = await showChangeAlarmModePopup(allAlarmModes!, homieAppContext, context, size); if(result != null && currentAlarmMode!.id != result) { // update current alarmMode try{ var resultId = await homieAppContext.clientAPI.alarmApi!.alarmActivate(result); if(resultId != null) { //allAlarmModes!.firstWhere((alarmMode) => alarmMode.id == resultId); setState(() { }); } } catch(e) { debugPrint("An error occured during alarm mode activation - " + e.toString()); } } }, onLongPress: () { if(currentAlarmMode!.type! != AlarmType.desarmed) { Navigator.push( context, MaterialPageRoute( builder: (context) => AlarmDetailPage( alarmMode: currentAlarmMode!, ), ), ); } }, child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ Text(currentAlarmMode!.name!), Icon(getAlarmModeIcon(currentAlarmMode!)), ], ), ), ), ), ); } else if (snapshot.connectionState == ConnectionState.none) { print('ConnectionState.none'); return Text("No data"); } else { return Container(height: size.height * 0.2, child: LoadingCommon()); } } ), Text("TODO Cameras"), Container( height: size.height * 0.3, width: size.width * 0.9, child: VideoPlayerNetwork(initialFluxUrl: "http://192.168.31.140:8765/picture/4/current")/*ImageStreamWidget( initialImageUrl: "http://192.168.31.140:8765/picture/4/current", )*/ /*VideoPlayerWidget( videoUrl: "http://192.168.31.140:8084/", //"http://192.168.31.140:8084/", )*/, ), Text("Test ?"), ], ), //), ), ); } } alarmDecoration(AlarmModeDTO alarmModeDTO) { return BoxDecoration( color: alarmModeDTO.activated! && alarmModeDTO.type == AlarmType.desarmed ? Colors.white : Colors.red.withOpacity(0.6), shape: BoxShape.rectangle, borderRadius: BorderRadius.circular(20.0), border: Border.all( color: kBackgroundSecondGrey.withOpacity(0.35), width: 0.2, ), boxShadow: [ BoxShadow( color: kMainColor.withOpacity(0.35), //spreadRadius: 0.15, blurRadius: 5, offset: const Offset(0, 15), // changes position of shadow ), ], ); }