import 'package:flutter/material.dart'; import 'package:mycore_api/api.dart'; import 'package:myhomie_app/Components/loading_common.dart'; import 'package:myhomie_app/Models/homieContext.dart'; import 'package:myhomie_app/Screens/Main/Automations/automationDetailPage.dart'; import 'package:myhomie_app/app_context.dart'; import 'package:myhomie_app/constants.dart'; import 'package:provider/provider.dart'; class AutomationsScreen extends StatefulWidget { AutomationsScreen({Key? key}) : super(key: key); @override _AutomationsScreenState createState() => _AutomationsScreenState(); } class _AutomationsScreenState extends State { bool isLoading = true; List? allAutomations; @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 SingleChildScrollView( child: Container( height: size.height * 0.9, child: FutureBuilder( future: homieAppContext.clientAPI.automationApi!.automationGetAll(homieAppContext.homeId!), builder: (context, AsyncSnapshot?> snapshot) { if (snapshot.connectionState == ConnectionState.done) { allAutomations = snapshot.data; return Padding( padding: const EdgeInsets.all(8.0), child: RefreshIndicator( color: Theme.of(context).primaryColor, displacement: 20, onRefresh: () async { print("TODO refresh"); setState(() {}); return Future(() => null); //await Message.getMessages(this.messages, appContext, true, true); }, child: ListView.builder( shrinkWrap: true, itemBuilder: (BuildContext context, int index) { return Padding( padding: const EdgeInsets.all(8.0), child: InkWell( onTap: () { debugPrint(allAutomations![index].toString()); Navigator.push( context, MaterialPageRoute( builder: (context) => AutomationDetailPage( automationDTO: allAutomations![index], ), ), ); }, child: Container( height: size.height * 0.1, decoration: BoxDecoration( color: Colors.white, 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, 10), // changes position of shadow ), ], ), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ Text(allAutomations![index].name!), Switch( // thumb color (round icon) activeColor: kMainColor, activeTrackColor: Colors.grey.shade400, inactiveThumbColor: Colors.blueGrey.shade600, inactiveTrackColor: Colors.grey.shade400, splashRadius: 50.0, // boolean variable value value: allAutomations![index].active!, // changes the state of the switch onChanged: (bool value) { /*setState(() { allAutomations![index].active = value; // TODO save });*/ } ), ], ), ), ), ); }, itemCount: allAutomations!.length ), ), ); } else if (snapshot.connectionState == ConnectionState.none) { print('ConnectionState.none'); return Text("No data"); } else { return Container(height: size.height * 0.2, child: LoadingCommon()); } } ), ), ); } }