[settings] blank page for now with just local storage reset [storage] implement diary
This commit is contained in:
		
							parent
							
								
									33fe0eff39
								
							
						
					
					
						commit
						85cdd68ac1
					
				
					 6 changed files with 84 additions and 3 deletions
				
			
		| 
						 | 
					@ -32,4 +32,17 @@ class Diary {
 | 
				
			||||||
        carb = map['carb'] as double,
 | 
					        carb = map['carb'] as double,
 | 
				
			||||||
        fat = map['fat'] as double,
 | 
					        fat = map['fat'] as double,
 | 
				
			||||||
        fiber = map['fiber'] as double;
 | 
					        fiber = map['fiber'] as double;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Map<String, Object?> toMap() {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					      'id': id,
 | 
				
			||||||
 | 
					      'date': date.toIso8601String(),
 | 
				
			||||||
 | 
					      'meals': meals.map((e) => e.toMap()).toList(),
 | 
				
			||||||
 | 
					      'calories': calories,
 | 
				
			||||||
 | 
					      'protein': protein,
 | 
				
			||||||
 | 
					      'carb': carb,
 | 
				
			||||||
 | 
					      'fat': fat,
 | 
				
			||||||
 | 
					      'fiber': fiber,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,4 +33,18 @@ class Entry {
 | 
				
			||||||
        fat = map['fat'] as double,
 | 
					        fat = map['fat'] as double,
 | 
				
			||||||
        fiber = map['fiber'] as double,
 | 
					        fiber = map['fiber'] as double,
 | 
				
			||||||
        carb = map['carb'] as double;
 | 
					        carb = map['carb'] as double;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Map<String, Object?> toMap() {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					      'id': id,
 | 
				
			||||||
 | 
					      'grams': grams,
 | 
				
			||||||
 | 
					      'product': product.toMap(),
 | 
				
			||||||
 | 
					      'mealId': mealId,
 | 
				
			||||||
 | 
					      'calories': calories,
 | 
				
			||||||
 | 
					      'protein': protein,
 | 
				
			||||||
 | 
					      'fat': fat,
 | 
				
			||||||
 | 
					      'fiber': fiber,
 | 
				
			||||||
 | 
					      'carb': carb,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,4 +38,18 @@ class Meal {
 | 
				
			||||||
        fat = map['fat'] as double,
 | 
					        fat = map['fat'] as double,
 | 
				
			||||||
        fiber = map['fiber'] as double,
 | 
					        fiber = map['fiber'] as double,
 | 
				
			||||||
        diaryId = map['diary_id'] as int;
 | 
					        diaryId = map['diary_id'] as int;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Map<String, Object?> toMap() {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					      'id': id,
 | 
				
			||||||
 | 
					      'name': name,
 | 
				
			||||||
 | 
					      'order': order,
 | 
				
			||||||
 | 
					      'calories': calories,
 | 
				
			||||||
 | 
					      'protein': protein,
 | 
				
			||||||
 | 
					      'fat': fat,
 | 
				
			||||||
 | 
					      'fiber': fiber,
 | 
				
			||||||
 | 
					      'carb': carb,
 | 
				
			||||||
 | 
					      'diaryId': diaryId,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,4 +25,16 @@ class Preset {
 | 
				
			||||||
        carb = map['carb'] as double,
 | 
					        carb = map['carb'] as double,
 | 
				
			||||||
        fat = map['fat'] as double,
 | 
					        fat = map['fat'] as double,
 | 
				
			||||||
        fiber = map['fiber'] as double;
 | 
					        fiber = map['fiber'] as double;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Map<String, Object?> toMap() {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					      'id': id,
 | 
				
			||||||
 | 
					      'name': name,
 | 
				
			||||||
 | 
					      'calories': calories,
 | 
				
			||||||
 | 
					      'protein': protein,
 | 
				
			||||||
 | 
					      'fat': fat,
 | 
				
			||||||
 | 
					      'fiber': fiber,
 | 
				
			||||||
 | 
					      'carb': carb,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,6 +6,7 @@ import 'package:fooder/components/app_bar.dart';
 | 
				
			||||||
import 'package:fooder/components/navigation_bar.dart';
 | 
					import 'package:fooder/components/navigation_bar.dart';
 | 
				
			||||||
import 'package:fooder/screens/login.dart';
 | 
					import 'package:fooder/screens/login.dart';
 | 
				
			||||||
import 'package:fooder/screens/main.dart';
 | 
					import 'package:fooder/screens/main.dart';
 | 
				
			||||||
 | 
					import 'package:fooder/screens/settings.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TextStyle logoStyle(context) {
 | 
					TextStyle logoStyle(context) {
 | 
				
			||||||
  return Theme.of(context).textTheme.labelLarge!.copyWith(
 | 
					  return Theme.of(context).textTheme.labelLarge!.copyWith(
 | 
				
			||||||
| 
						 | 
					@ -30,6 +31,7 @@ abstract class BasedState<T extends BasedScreen> extends State<T> {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void backToLogin() {
 | 
					  void backToLogin() {
 | 
				
			||||||
 | 
					    Navigator.of(context).popUntil((route) => route.isFirst);
 | 
				
			||||||
    Navigator.pushReplacement(
 | 
					    Navigator.pushReplacement(
 | 
				
			||||||
      context,
 | 
					      context,
 | 
				
			||||||
      MaterialPageRoute(
 | 
					      MaterialPageRoute(
 | 
				
			||||||
| 
						 | 
					@ -39,6 +41,7 @@ abstract class BasedState<T extends BasedScreen> extends State<T> {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void backToDiary() {
 | 
					  void backToDiary() {
 | 
				
			||||||
 | 
					    Navigator.of(context).popUntil((route) => route.isFirst);
 | 
				
			||||||
    Navigator.pushReplacement(
 | 
					    Navigator.pushReplacement(
 | 
				
			||||||
      context,
 | 
					      context,
 | 
				
			||||||
      MaterialPageRoute(
 | 
					      MaterialPageRoute(
 | 
				
			||||||
| 
						 | 
					@ -47,6 +50,15 @@ abstract class BasedState<T extends BasedScreen> extends State<T> {
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void navigateToSettings() {
 | 
				
			||||||
 | 
					    Navigator.push(
 | 
				
			||||||
 | 
					      context,
 | 
				
			||||||
 | 
					      MaterialPageRoute(
 | 
				
			||||||
 | 
					        builder: (context) => SettingsScreen(ctx: ctx),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  FAppBar appBar() {
 | 
					  FAppBar appBar() {
 | 
				
			||||||
    return FAppBar(
 | 
					    return FAppBar(
 | 
				
			||||||
      actions: [
 | 
					      actions: [
 | 
				
			||||||
| 
						 | 
					@ -93,7 +105,7 @@ abstract class BasedState<T extends BasedScreen> extends State<T> {
 | 
				
			||||||
                Icons.person,
 | 
					                Icons.person,
 | 
				
			||||||
                color: Theme.of(context).colorScheme.onSurfaceVariant,
 | 
					                color: Theme.of(context).colorScheme.onSurfaceVariant,
 | 
				
			||||||
              ),
 | 
					              ),
 | 
				
			||||||
              onPressed: () {},
 | 
					              onPressed: navigateToSettings,
 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
          ],
 | 
					          ],
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,14 +4,16 @@ import 'package:flutter/widgets.dart';
 | 
				
			||||||
import 'package:path/path.dart';
 | 
					import 'package:path/path.dart';
 | 
				
			||||||
import 'package:sqflite/sqflite.dart';
 | 
					import 'package:sqflite/sqflite.dart';
 | 
				
			||||||
import 'package:fooder/storage/product.dart';
 | 
					import 'package:fooder/storage/product.dart';
 | 
				
			||||||
 | 
					import 'package:fooder/storage/diary.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Storage {
 | 
					class Storage {
 | 
				
			||||||
  Database db;
 | 
					  Database db;
 | 
				
			||||||
  ProductStorage product;
 | 
					  ProductStorage product;
 | 
				
			||||||
 | 
					  DiaryStorage diary;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  static const String path = "storage.db";
 | 
					  static const String path = "storage.db";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Storage({required this.db, required this.product});
 | 
					  Storage({required this.db, required this.product, required this.diary});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  static Future<Storage> create() async {
 | 
					  static Future<Storage> create() async {
 | 
				
			||||||
    WidgetsFlutterBinding.ensureInitialized();
 | 
					    WidgetsFlutterBinding.ensureInitialized();
 | 
				
			||||||
| 
						 | 
					@ -20,12 +22,26 @@ class Storage {
 | 
				
			||||||
      onCreate: createTables,
 | 
					      onCreate: createTables,
 | 
				
			||||||
      version: 1,
 | 
					      version: 1,
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    return Storage(db: db, product: ProductStorage(db: db));
 | 
					    return Storage(
 | 
				
			||||||
 | 
					        db: db, product: ProductStorage(db: db), diary: DiaryStorage(db: db));
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Future<void> reset() async {
 | 
				
			||||||
 | 
					    await db.close();
 | 
				
			||||||
 | 
					    await deleteDatabase(join(await getDatabasesPath(), path));
 | 
				
			||||||
 | 
					    db = await openDatabase(
 | 
				
			||||||
 | 
					      join(await getDatabasesPath(), path),
 | 
				
			||||||
 | 
					      onCreate: createTables,
 | 
				
			||||||
 | 
					      version: 1,
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    product = ProductStorage(db: db);
 | 
				
			||||||
 | 
					    diary = DiaryStorage(db: db);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  static Future<void> createTables(Database db, int version) async {
 | 
					  static Future<void> createTables(Database db, int version) async {
 | 
				
			||||||
    var batch = db.batch();
 | 
					    var batch = db.batch();
 | 
				
			||||||
    await ProductStorage.createTable(batch);
 | 
					    await ProductStorage.createTable(batch);
 | 
				
			||||||
 | 
					    await DiaryStorage.createTable(batch);
 | 
				
			||||||
    await batch.commit(noResult: true);
 | 
					    await batch.commit(noResult: true);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue