1
0
mirror of https://github.com/go-vikunja/app synced 2024-06-04 11:39:47 +00:00

Added settings page

This commit is contained in:
benimautner 2022-04-13 00:32:21 +02:00
parent 2dfe99b51b
commit 36ce680927
4 changed files with 62 additions and 0 deletions

View File

@ -76,4 +76,14 @@ class ListAPIService extends APIService implements ListService {
void setDisplayDoneTasks(int listId, String value) {
_storage.write(key: "display_done_tasks_list_$listId", value: value);
}
@override
Future<String> getDefaultList() {
return _storage.read(key: "default_list_id");
}
@override
void setDefaultList(int listId) {
_storage.write(key: "default_list_id", value: listId.toString());
}
}

View File

@ -10,6 +10,7 @@ import 'package:vikunja_app/pages/namespace/namespace_edit.dart';
import 'package:vikunja_app/pages/placeholder.dart';
import 'package:vikunja_app/global.dart';
import 'package:vikunja_app/models/namespace.dart';
import 'package:vikunja_app/pages/settings.dart';
class HomePage extends StatefulWidget {
@override
@ -64,6 +65,13 @@ class HomePageState extends State<HomePage> with AfterLayoutMixin<HomePage> {
VikunjaGlobal.of(context).logoutUser(context);
},
),
ListTile(
title: Text('Settings'),
leading: Icon(Icons.settings),
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (context) => SettingsPage()));
},
)
]);
}

42
lib/pages/settings.dart Normal file
View File

@ -0,0 +1,42 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:vikunja_app/global.dart';
import 'package:vikunja_app/models/list.dart';
class SettingsPage extends StatefulWidget {
@override
State<StatefulWidget> createState() => SettingsPageState();
}
class SettingsPageState extends State<SettingsPage> {
List<TaskList> taskListList;
int defaultList;
@override
Widget build(BuildContext context) {
if(taskListList == null)
VikunjaGlobal.of(context).listService.getAll().then((value) => setState(() => taskListList = value));
if(defaultList == null)
VikunjaGlobal.of(context).listService.getDefaultList().then((value) => setState(() => defaultList = value == null ? null : int.tryParse(value)));
return new Scaffold(
appBar: AppBar(title: Text("Settings"),),
body: Column(
children: [
taskListList != null ?
ListTile(
title: Text("Default List"),
trailing: DropdownButton(
items: taskListList.map((e) => DropdownMenuItem(child: Text(e.title), value: e.id)).toList(),
value: defaultList,
onChanged: (value){
setState(() => defaultList = value);
VikunjaGlobal.of(context).listService.setDefaultList(value);
},
),) : ListTile(title: Text("..."),)
],
),
);
}
}

View File

@ -22,6 +22,8 @@ abstract class ListService {
Future delete(int listId);
Future<String> getDisplayDoneTasks(int listId);
void setDisplayDoneTasks(int listId, String value);
Future<String> getDefaultList();
void setDefaultList(int listId);
}
abstract class TaskService {