initialized Application theme

This commit is contained in:
Mohammad Salameh
2024-02-17 16:27:27 +03:00
parent 16f47f744c
commit 3190361901
98 changed files with 871 additions and 1004 deletions
+22
View File
@@ -0,0 +1,22 @@
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:meta/meta.dart';
import 'package:syncrow_app/features/scene/model/scene_model.dart';
part 'scene_state.dart';
class SceneCubit extends Cubit<SceneState> {
SceneCubit() : super(SceneInitial()) {
getScenes();
}
static SceneCubit of(context) => BlocProvider.of<SceneCubit>(context);
void getScenes() {
emit(SceneLoading());
Future.delayed(const Duration(seconds: 5), () {
emit(SceneSuccess());
});
}
var scenes = <SceneModel>[];
}
+12
View File
@@ -0,0 +1,12 @@
part of 'scene_cubit.dart';
@immutable
abstract class SceneState {}
class SceneInitial extends SceneState {}
class SceneLoading extends SceneState {}
class SceneSuccess extends SceneState {}
class SceneFailure extends SceneState {}
+46
View File
@@ -0,0 +1,46 @@
class SceneModel {
final String id;
final String name;
final String description;
final String imageUrl;
final String location;
final String type;
final String rating;
final String price;
final String duration;
final String date;
final String time;
final String status;
SceneModel({
required this.id,
required this.name,
required this.description,
required this.imageUrl,
required this.location,
required this.type,
required this.rating,
required this.price,
required this.duration,
required this.date,
required this.time,
required this.status,
});
factory SceneModel.fromJson(Map<String, dynamic> json) {
return SceneModel(
id: json['id'],
name: json['name'],
description: json['description'],
imageUrl: json['imageUrl'],
location: json['location'],
type: json['type'],
rating: json['rating'],
price: json['price'],
duration: json['duration'],
date: json['date'],
time: json['time'],
status: json['status'],
);
}
}
-7
View File
@@ -1,7 +0,0 @@
import 'package:flutter/material.dart';
import 'scene_state.dart';
class SceneProvider extends ChangeNotifier {
final state = SceneState();
}
-6
View File
@@ -1,6 +0,0 @@
class SceneState {
SceneState() {
// init some variables
}
}
-18
View File
@@ -1,18 +0,0 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'scene_provider.dart';
class ScenePage extends StatelessWidget {
const ScenePage({super.key});
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (BuildContext context) => SceneProvider(),
builder: (context, child) => const Center(
child: Text('Scene Page'),
),
);
}
}
+22
View File
@@ -0,0 +1,22 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/scene/bloc/scene_cubit.dart';
import 'package:syncrow_app/features/scene/view/widgets/scene_view_no_scenes.dart';
class SceneView extends StatelessWidget {
const SceneView({super.key});
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (BuildContext context) => SceneCubit(),
child: BlocBuilder<SceneCubit, SceneState>(
builder: (context, state) {
return state is SceneLoading
? const Center(child: CircularProgressIndicator())
: const SceneViewNoScenes();
},
),
);
}
}
@@ -0,0 +1,40 @@
import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
import 'package:syncrow_app/features/shared_widgets/default_text_button.dart';
import 'package:syncrow_app/utils/resource_manager/assets_manager.dart';
class SceneViewNoScenes extends StatelessWidget {
const SceneViewNoScenes({
super.key,
});
@override
Widget build(BuildContext context) {
return Center(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 40),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
ImageManager.automation,
scale: 1,
opacity: const AlwaysStoppedAnimation(.5),
width: 140,
),
const Gap(15),
const Text(
'Home automation saves your time and effort by automating routine tasks.',
textAlign: TextAlign.center,
style: TextStyle(color: Colors.grey),
),
const Gap(20),
const DefaultTextButton(
text: 'Create Scene',
)
],
),
),
);
}
}