Added theme, reworked UI

This commit is contained in:
2024-02-14 23:41:50 +01:00
parent a51ca14041
commit 1a7f28703a
23 changed files with 356 additions and 163 deletions

View File

@@ -15,24 +15,25 @@ class DataPage extends StatelessWidget {
),
padding: const EdgeInsets.symmetric(vertical: 9, horizontal: 10),
margin: const EdgeInsets.symmetric(vertical: 2, horizontal: 10),
child: const Column(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
const Text(
'Settings',
style: TextStyle(
fontWeight: FontWeight.w900,
fontSize: 35,
),
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
ImportSettings(),
CategoriesSettings(),
AccountSettings(),
],
)
Expanded(
child: ListView(
children: const [
ImportSettings(),
CategoriesSettings(),
AccountSettings(),
]
)
),
]
)
)

View File

@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:tunas/domains/account/account_bloc.dart';
import 'package:tunas/pages/common/titled_container.dart';
class AccountSettings extends StatelessWidget {
const AccountSettings({super.key});
@@ -16,34 +17,15 @@ class AccountSettings extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocBuilder<AccountBloc, AccountState>(
builder: (context, state) => Container(
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(5),
builder: (context, state) => TitledContainer(
title: "Accounts",
child: SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: _computeCategoryList(state.subAccounts),
),
),
padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 15),
margin: const EdgeInsets.all(5),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text(
"Accounts",
style: TextStyle(
fontWeight: FontWeight.w900,
fontSize: 20,
),
),
const SizedBox(height: 10),
SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: _computeCategoryList(state.subAccounts),
),
),
],
)
),
);
}

View File

@@ -1,21 +1,42 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:tunas/domains/category/category_bloc.dart';
import 'package:tunas/pages/common/titled_container.dart';
import 'package:tunas/repositories/account/models/category.dart';
class CategoriesSettings extends StatelessWidget {
const CategoriesSettings({super.key});
List<Widget> _computeCategoryList(List<Category> categories) {
List<Widget> _computeCategoryList(BuildContext context, List<Category> categories) {
return categories.map((category) => Row(
children: [
Container(
height: 10,
width: 10,
IconButton(
onPressed: () {},
icon: const Icon(Icons.palette),
color: category.rgbToColor(),
),
IconButton(
onPressed: () {},
icon: const Icon(Icons.savings),
color: category.saving ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.error,
),
IconButton(
onPressed: () {},
icon: const Icon(Icons.foundation),
color: category.essential ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.error,
),
Container(width: 5),
Text(category.label),
Expanded(
child: Text(category.label)
),
IconButton(
onPressed: () {},
icon: const Icon(Icons.edit),
),
IconButton(
onPressed: () {},
icon: const Icon(Icons.delete),
),
],
)).toList();
}
@@ -23,35 +44,16 @@ class CategoriesSettings extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocBuilder<CategoryBloc, CategoryState>(
builder: (context, state) => Container(
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(5),
builder: (context, state) => TitledContainer(
title: "Categories",
child: SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: _computeCategoryList(context, state.categories),
),
),
padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 15),
margin: const EdgeInsets.all(5),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text(
"Categories",
style: TextStyle(
fontWeight: FontWeight.w900,
fontSize: 20,
),
),
const SizedBox(height: 10),
SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: _computeCategoryList(state.categories),
),
),
],
)
),
)
);
}
}

View File

@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:tunas/domains/account/account_bloc.dart';
import 'package:tunas/pages/common/titled_container.dart';
class ImportSettings extends StatelessWidget {
const ImportSettings({super.key});
@@ -8,25 +9,10 @@ class ImportSettings extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocBuilder<AccountBloc, AccountState>(
builder: (context, state) => Container(
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(5)
),
padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 15),
margin: const EdgeInsets.all(5),
builder: (context, state) => TitledContainer(
title: "Import",
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text(
"Import",
style: TextStyle(
fontWeight: FontWeight.w900,
fontSize: 20,
),
),
const SizedBox(height: 10),
FilledButton(
onPressed: () => context.read<AccountBloc>().add(const AccountImportCSV()),
child: const Text('Import CSV')