import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; void main() { runApp(const MyApp()); } class Alarms{ final int user; final List alarms; const Alarms({ required this.user, required this.alarms, }); factory Alarms.fromJson(Map json) { return switch (json) { { 'user': int user, 'alarms': List, } => Alarms( user: user, alarms: alarms, ), _ => throw const FormatException('Failed to load alarm'), }; } } class Alarm { final int hour; final int mins; final bool active; final bool repeat; // final Days days; const Alarm({ required this.hour, required this.mins, required this.active, required this.repeat, // required this.days }); factory Alarm.fromJson(Map json) { return switch (json) { { 'hour': int hour, 'mins': int mins, 'active': bool active, 'repeat': bool repeat, // 'days' : { // 'monday' : bool monday, // 'tuesday' : bool tuesday, // 'wednesday' : bool wednesday, // 'thursday' : bool thursday, // 'friday' : bool friday, // 'saturday' : bool saturday, // 'sunday' : bool sunday, // }, } => Alarm( hour: hour, mins: mins, active: active, repeat: repeat, ), _ => throw const FormatException('Failed to load alarm'), }; } } // Future fetchAlarm() async { // final response = await http.get(Uri.parse('http://localhost:8000/')); // // if (response.statusCode == 200) { // return Alarm.fromJson(jsonDecode(response.body) as Map); // } else { // throw Exception('Failed to parse json'); // } // } Future fetchAlarm() async { final response = await http.get(Uri.parse('http://localhost:8000/')); if (response.statusCode == 200) { return Alarms.fromJson(jsonDecode(response.body) as Map); } else { throw Exception('Failed to parse json'); } } // class Days { // final bool monday; // final bool tuesday; // final bool wednesday; // final bool thursday; // final bool friday; // final bool saturday; // final bool sunday; // // const Days( // {required this.monday, // required this.tuesday, // required this.wednesday, // required this.thursday, // required this.friday, // required this.saturday, // required this.sunday}); // } class MyApp extends StatelessWidget { const MyApp({super.key}); // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'KhazClock', theme: ThemeData( colorScheme: ColorScheme.fromSeed(seedColor: Colors.redAccent), useMaterial3: true, ), home: const MyHomePage(title: 'Cloud Clock Sync App'), ); } } class MyHomePage extends StatefulWidget { const MyHomePage({super.key, required this.title}); final String title; @override State createState() => _MyHomePageState(); } class _MyHomePageState extends State { late Future futureAlarm; @override void initState() { super.initState(); futureAlarm = fetchAlarm(); } @override Widget build(BuildContext context) { return Scaffold( body: Container( margin: const EdgeInsets.all(10.0), child: FutureBuilder( future: futureAlarm, builder: (context, snapshot) { if (snapshot.hasData) { // return Text(snapshot.data!.hour.toString()); return Row( children: [ Expanded( child: Text( "${snapshot.data!.hour.toString()}:${snapshot.data!.mins.toString()}")), Expanded( child: Text( "Repeat: ${snapshot.data!.repeat.toString()}")), const SwitchOne(), ], ); } else if (snapshot.hasError) { return Text('${snapshot.error}'); } return const CircularProgressIndicator(); }), // child: ListView.builder( // scrollDirection: Axis.vertical, // addAutomaticKeepAlives: false, // itemBuilder: (_, index) { // return const Row(children: [ // Expanded(child: Text("Row")), // Expanded(child: Text("Second text")), // SwitchOne(), // ]); // })), ), ); } } class SwitchOne extends StatefulWidget { const SwitchOne({super.key}); @override State createState() => _SwitchOneState(); } class _SwitchOneState extends State { bool light = true; @override Widget build(BuildContext context) { return Switch( // This bool value toggles the switch. value: light, activeColor: Colors.red, onChanged: (bool value) { // This is called when the user toggles the switch. setState(() { light = value; }); }, ); } }