Skip to content
Snippets Groups Projects
Commit 9d0bc8bc authored by Florian Schindler's avatar Florian Schindler
Browse files

changed the way icon data is saved

it now can be saved to hive:partying_face:
parent 77f52af4
No related branches found
No related tags found
No related merge requests found
import 'package:flutter/material.dart';
import 'package:trackeroo/logic/models/category.dart';
class CategoryListtile extends StatelessWidget {
const CategoryListtile({super.key, required this.category});
final Category category;
@override
Widget build(BuildContext context) {
return Row(
children: [
Icon(IconData(category.iconCodePoint, fontFamily: category.iconFontFamily)),
Text(category.title),
Container(height: 10.0, width: 10.0, color: Color(category.colorValue)),
],
);
}
}
...@@ -52,7 +52,7 @@ class _TransactionListtileState extends State<TransactionListtile> { ...@@ -52,7 +52,7 @@ class _TransactionListtileState extends State<TransactionListtile> {
borderRadius: const BorderRadius.all(Radius.circular(8.0)), borderRadius: const BorderRadius.all(Radius.circular(8.0)),
color: Theme.of(context).colorScheme.surface color: Theme.of(context).colorScheme.surface
), ),
child: Icon(category.icon), child: Icon(IconData(category.iconCodePoint, fontFamily: category.iconFontFamily)),
), ),
const SizedBox(width: 17.0), const SizedBox(width: 17.0),
Column( Column(
...@@ -129,12 +129,12 @@ class _TransactionListtileState extends State<TransactionListtile> { ...@@ -129,12 +129,12 @@ class _TransactionListtileState extends State<TransactionListtile> {
Container( Container(
padding: const EdgeInsets.symmetric(horizontal: 15.0, vertical: 12.0), padding: const EdgeInsets.symmetric(horizontal: 15.0, vertical: 12.0),
decoration: BoxDecoration( decoration: BoxDecoration(
color: category.color, color: Color(category.colorValue),
borderRadius: const BorderRadius.all(Radius.circular(8.0)) borderRadius: const BorderRadius.all(Radius.circular(8.0))
), ),
child: Row( child: Row(
children: [ children: [
Icon(category.icon), Icon(IconData(category.iconCodePoint, fontFamily: category.iconFontFamily)),
const SizedBox(width: 20.0), const SizedBox(width: 20.0),
Text(category.title) Text(category.title)
], ],
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:trackeroo/frontend/utils/category_listtile.dart';
import 'package:trackeroo/logic/services/categories_controller.dart';
import 'package:trackeroo/logic/services/locator.dart';
class CategoryView extends StatelessWidget { class CategoryView extends StatelessWidget {
const CategoryView({Key? key}) : super(key: key); const CategoryView({Key? key}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Center( return SingleChildScrollView(
child: Column( child: Padding(
mainAxisAlignment: MainAxisAlignment.center, padding: const EdgeInsets.all(16.0),
children: <Widget>[ child: Column(
Text( mainAxisAlignment: MainAxisAlignment.center,
'Category Page', children: <Widget>[
style: Theme.of(context).textTheme.headlineMedium, ListView.builder(
), physics: const NeverScrollableScrollPhysics(),
], shrinkWrap: true,
itemCount: locator.get<CategoriesController>().categories.values.length,
itemBuilder: (context, index) => CategoryListtile(category: locator.get<CategoriesController>().categories[index]),
)
],
),
), ),
); );
} }
......
import 'package:flutter/material.dart';
import 'package:hive/hive.dart'; import 'package:hive/hive.dart';
part 'category.g.dart'; part 'category.g.dart';
...@@ -12,29 +11,33 @@ class Category { ...@@ -12,29 +11,33 @@ class Category {
String title; String title;
@HiveField(2) @HiveField(2)
IconData icon; int iconCodePoint;
@HiveField(3) @HiveField(3)
Color color; String iconFontFamily;
@HiveField(4) @HiveField(4)
int colorValue;
@HiveField(5)
double budget; double budget;
Category({ Category({
required this.id, required this.id,
required this.title, required this.title,
required this.icon, required this.iconCodePoint,
required this.color, this.iconFontFamily = 'MaterialIcons',
required this.colorValue,
this.budget = -1 this.budget = -1
}); });
factory Category.fromJson(Map<String, dynamic> parsedJson) { factory Category.fromJson(Map<String, dynamic> parsedJson) {
return Category( return Category(
id: parsedJson['id'], id: parsedJson['id'],
title: parsedJson['title'], title: parsedJson['title'],
icon: parsedJson['icon'], iconCodePoint: parsedJson['icon_code_point'],
color: parsedJson['color'], iconFontFamily: parsedJson['icon_font_family'],
colorValue: parsedJson['color_value'],
budget: parsedJson['budget'] ?? -1 budget: parsedJson['budget'] ?? -1
); );
} }
......
...@@ -19,25 +19,28 @@ class CategoryAdapter extends TypeAdapter<Category> { ...@@ -19,25 +19,28 @@ class CategoryAdapter extends TypeAdapter<Category> {
return Category( return Category(
id: fields[0] as int, id: fields[0] as int,
title: fields[1] as String, title: fields[1] as String,
icon: fields[2] as IconData, iconCodePoint: fields[2] as int,
color: fields[3] as Color, iconFontFamily: fields[3] as String,
budget: fields[4] as double, colorValue: fields[4] as int,
budget: fields[5] as double,
); );
} }
@override @override
void write(BinaryWriter writer, Category obj) { void write(BinaryWriter writer, Category obj) {
writer writer
..writeByte(5) ..writeByte(6)
..writeByte(0) ..writeByte(0)
..write(obj.id) ..write(obj.id)
..writeByte(1) ..writeByte(1)
..write(obj.title) ..write(obj.title)
..writeByte(2) ..writeByte(2)
..write(obj.icon) ..write(obj.iconCodePoint)
..writeByte(3) ..writeByte(3)
..write(obj.color) ..write(obj.iconFontFamily)
..writeByte(4) ..writeByte(4)
..write(obj.colorValue)
..writeByte(5)
..write(obj.budget); ..write(obj.budget);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment