Skip to content

Commit

Permalink
backend implementation stage 1
Browse files Browse the repository at this point in the history
  • Loading branch information
coderrrrr2 committed Dec 22, 2023
1 parent c6a4f0b commit 22f74d9
Show file tree
Hide file tree
Showing 12 changed files with 164 additions and 27 deletions.
7 changes: 7 additions & 0 deletions ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ PODS:
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- shared_preferences_foundation (0.0.1):
- Flutter
- FlutterMacOS
- sqflite (0.0.3):
- Flutter
- FMDB (>= 2.7.5)
Expand All @@ -16,6 +19,7 @@ DEPENDENCIES:
- Flutter (from `Flutter`)
- flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
- sqflite (from `.symlinks/plugins/sqflite/ios`)

SPEC REPOS:
Expand All @@ -29,6 +33,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/flutter_native_splash/ios"
path_provider_foundation:
:path: ".symlinks/plugins/path_provider_foundation/darwin"
shared_preferences_foundation:
:path: ".symlinks/plugins/shared_preferences_foundation/darwin"
sqflite:
:path: ".symlinks/plugins/sqflite/ios"

Expand All @@ -37,6 +43,7 @@ SPEC CHECKSUMS:
flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126
sqflite: 31f7eba61e3074736dff8807a9b41581e4f7f15a

PODFILE CHECKSUM: 70d9d25280d0dd177a5f637cdb0f0b0b12c6a189
Expand Down
34 changes: 34 additions & 0 deletions lib/backend/sqflite_service.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import 'package:sqflite/sqflite.dart' as sql;
import 'package:path/path.dart' as path;
import 'package:sqflite/sqflite.dart';
import 'package:to_do_app/models/to_do.dart';

class SqfLiteService {
Future<Database> initializeDataBase() async {
final dbPath = await sql.getDatabasesPath();
return await sql.openDatabase(path.join(dbPath, 'TodstoDb'),
onCreate: (dbInstance, version) async {
dbInstance.execute(
"CREATE TABLE user_todos (id TEXT PRIMARY KEY, taskName TEXT, time TEXT, date TEXT, taskDayClassification TEXT, repeatTaskDays TEXT, isChecked INTEGER)",
);
}, version: 1);
}

void insertIntoDatabase(ToDo todo) async {
final db = await initializeDataBase();
db.insert('user_todos', {
'id': todo.id,
'taskName': todo.taskName,
'time': todo.time.toString(),
'date': todo.date.toString(),
'taskDayClassification': todo.taskDayClassification,
'repeatTaskDays': todo.repeatTaskDays,
'isChecked': todo.isChecked ? 1 : 0
});
}

void deleteFromDataBase(ToDo todo) async {
final db = await initializeDataBase();
await db.delete('user_todos', where: 'id == ?', whereArgs: [todo.id]);
}
}
2 changes: 1 addition & 1 deletion lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_native_splash/flutter_native_splash.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:to_do_app/color_scheme.dart';
import 'package:to_do_app/theme/color_scheme.dart';
import 'package:to_do_app/providers/settings_provider.dart';
import 'package:to_do_app/screens/home.dart';

Expand Down
2 changes: 2 additions & 0 deletions lib/models/to_do.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:uuid/uuid.dart';

Uuid uuid = const Uuid();
final formatter = DateFormat.yMd();

class ToDo {
final String taskName;
Expand Down
50 changes: 32 additions & 18 deletions lib/providers/to_do_provider.dart
Original file line number Diff line number Diff line change
@@ -1,33 +1,40 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:sqflite/sqflite.dart' as sql;
import 'package:to_do_app/models/to_do.dart';
import 'package:path/path.dart' as path;
import 'package:sqflite/sqlite_api.dart';
import 'package:to_do_app/backend/sqflite_service.dart';

bool isSearching = false;

Future<Database> getDataBase() async {
final dbPath = await sql.getDatabasesPath();
final database = await sql.openDatabase(
path.join(dbPath, 'TodoDb'),
onCreate: (dbInstance, version) async {
await dbInstance.execute(
"CREATE TABLE user_todo(id TEXT PRIMARY KEY, task TEXT, time TEXT, date DATETIME)",
);
},
);
return database;
}

class ListManipulator extends StateNotifier<List<ToDo>> {
ListManipulator() : super([]);

void add(ToDo todo) {
Future<void> loadPlaces() async {
final db = await SqfLiteService().initializeDataBase();
final data = await db.query('user_todos');
print(data);

var places = data.map((row) {
return ToDo(
taskName: row['taskName'] as String,
date: row['date'] as DateTime,
time: _parseTimeOfDay(row['time'] as String),
repeatTaskDays: row['repeatTaskDays'] as String,
id: row['id'] as String,
isChecked: row["isChecked"] == 1,
);
}).toList();

state = places;
}

void add(ToDo todo) async {
state = [...state, todo];
SqfLiteService().insertIntoDatabase(todo);
}

void remove(ToDo todo) {
void remove(ToDo todo) async {
state = state.where((element) => element != todo).toList();
SqfLiteService().deleteFromDataBase(todo);
}

void editToDo(ToDo todo, int index) {
Expand All @@ -42,3 +49,10 @@ class ListManipulator extends StateNotifier<List<ToDo>> {
final toDoProvider = StateNotifierProvider<ListManipulator, List<ToDo>>((ref) {
return ListManipulator();
});

TimeOfDay _parseTimeOfDay(String timeString) {
List<String> components = timeString.split(':');
int hour = int.parse(components[0]);
int minute = int.parse(components[1]);
return TimeOfDay(hour: hour, minute: minute);
}
7 changes: 2 additions & 5 deletions lib/screens/add_new_todo.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class _TasksScreenState extends ConsumerState<TasksScreen> {
List<String> repeatDaysChoices = [
"No Repat",
"Once a day",
"Oncw a day(Mon-Fri)",
"Once a day(Mon-Fri)",
"Once a week",
"Once a month",
"Once a year",
Expand Down Expand Up @@ -248,9 +248,9 @@ class _TasksScreenState extends ConsumerState<TasksScreen> {
),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Container(
width: 200,
margin: const EdgeInsets.all(15),
child: Text(
repeatDays,
Expand All @@ -272,9 +272,6 @@ class _TasksScreenState extends ConsumerState<TasksScreen> {
repeatDays = value!;
});
})),
const SizedBox(
width: 15,
)
],
),
]),
Expand Down
2 changes: 1 addition & 1 deletion lib/screens/edit_toDo.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:intl/intl.dart';
import 'package:to_do_app/color_scheme.dart';
import 'package:to_do_app/theme/color_scheme.dart';
import 'package:to_do_app/models/to_do.dart';
import 'package:to_do_app/providers/searched_button_provider.dart';
import 'package:to_do_app/providers/searced_todo_provider.dart';
Expand Down
File renamed without changes.
20 changes: 18 additions & 2 deletions lib/widgets/home_body.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:to_do_app/color_scheme.dart';
import 'package:to_do_app/theme/color_scheme.dart';
import 'package:to_do_app/models/to_do.dart';
import 'package:to_do_app/providers/searched_button_provider.dart';
import 'package:to_do_app/providers/searced_todo_provider.dart';
Expand All @@ -19,6 +19,14 @@ class HomeBody extends ConsumerStatefulWidget {
}

class _HomeBodyState extends ConsumerState<HomeBody> {
late Future<void> todoFuture;

@override
void initState() {
super.initState();
todoFuture = ref.read(toDoProvider.notifier).loadPlaces();
}

List<String> headerName = [
"Due This Week",
"Due Next Week",
Expand Down Expand Up @@ -213,6 +221,14 @@ class _HomeBodyState extends ConsumerState<HomeBody> {
},
);
}
return body;
return FutureBuilder(
future: todoFuture,
builder: (context, snapshot) {
return snapshot.connectionState == ConnectionState.waiting
? const Center(
child: CircularProgressIndicator(),
)
: SafeArea(child: body);
});
}
}
2 changes: 2 additions & 0 deletions macos/Flutter/GeneratedPluginRegistrant.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@ import FlutterMacOS
import Foundation

import path_provider_foundation
import shared_preferences_foundation
import sqflite

func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
}
64 changes: 64 additions & 0 deletions pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.0"
file:
dependency: transitive
description:
name: file
sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
url: "https://pub.dev"
source: hosted
version: "7.0.0"
flutter:
dependency: "direct main"
description: flutter
Expand Down Expand Up @@ -333,6 +341,62 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.4.4"
shared_preferences:
dependency: "direct main"
description:
name: shared_preferences
sha256: "81429e4481e1ccfb51ede496e916348668fd0921627779233bd24cc3ff6abd02"
url: "https://pub.dev"
source: hosted
version: "2.2.2"
shared_preferences_android:
dependency: transitive
description:
name: shared_preferences_android
sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06"
url: "https://pub.dev"
source: hosted
version: "2.2.1"
shared_preferences_foundation:
dependency: transitive
description:
name: shared_preferences_foundation
sha256: "7bf53a9f2d007329ee6f3df7268fd498f8373602f943c975598bbb34649b62a7"
url: "https://pub.dev"
source: hosted
version: "2.3.4"
shared_preferences_linux:
dependency: transitive
description:
name: shared_preferences_linux
sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa"
url: "https://pub.dev"
source: hosted
version: "2.3.2"
shared_preferences_platform_interface:
dependency: transitive
description:
name: shared_preferences_platform_interface
sha256: d4ec5fc9ebb2f2e056c617112aa75dcf92fc2e4faaf2ae999caa297473f75d8a
url: "https://pub.dev"
source: hosted
version: "2.3.1"
shared_preferences_web:
dependency: transitive
description:
name: shared_preferences_web
sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf
url: "https://pub.dev"
source: hosted
version: "2.2.1"
shared_preferences_windows:
dependency: transitive
description:
name: shared_preferences_windows
sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59"
url: "https://pub.dev"
source: hosted
version: "2.3.2"
sky_engine:
dependency: transitive
description: flutter
Expand Down
1 change: 1 addition & 0 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ dependencies:
sqflite: ^2.3.0

path: ^1.8.3
shared_preferences: ^2.2.2



Expand Down

0 comments on commit 22f74d9

Please sign in to comment.