use a Drawercontext to be able to have a specific scaffold for each page

This commit is contained in:
2022-08-29 17:16:51 +02:00
parent 9867b913f4
commit 01049d9381
11 changed files with 255 additions and 198 deletions

View File

@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
import 'package:openmediacentermobile/types/actor.dart';
import 'package:openmediacentermobile/preview/actor_tile.dart';
import '../DrawerPage.dart';
import '../api/api.dart';
import '../screen_loading.dart';
@ -33,33 +34,38 @@ class _ActorScreenState extends State<ActorScreen> {
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: _categories,
builder: (context, AsyncSnapshot<List<Actor>> snapshot) {
if (snapshot.connectionState != ConnectionState.done) {
return ScreenLoading();
}
return Scaffold(
appBar: AppBar(
title: Text("Temp"),
),
body: FutureBuilder(
future: _categories,
builder: (context, AsyncSnapshot<List<Actor>> snapshot) {
if (snapshot.connectionState != ConnectionState.done) {
return ScreenLoading();
}
if (snapshot.hasError) {
return Text("Error");
} else if (snapshot.hasData) {
return Padding(
padding: EdgeInsets.all(5),
child: SingleChildScrollView(
child: Wrap(
spacing: 5,
runSpacing: 5,
alignment: WrapAlignment.start,
children: snapshot.data!
.map((e) => ActorTile(actor: e))
.toList(growable: false),
),
),
);
} else {
return ScreenLoading();
}
},
);
if (snapshot.hasError) {
return Text("Error");
} else if (snapshot.hasData) {
return Padding(
padding: EdgeInsets.all(5),
child: SingleChildScrollView(
child: Wrap(
spacing: 5,
runSpacing: 5,
alignment: WrapAlignment.start,
children: snapshot.data!
.map((e) => ActorTile(actor: e))
.toList(growable: false),
),
),
);
} else {
return ScreenLoading();
}
},
),
drawer: MyDrawer());
}
}

View File

@ -2,6 +2,7 @@ import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:openmediacentermobile/preview/tag_tile.dart';
import '../DrawerPage.dart';
import '../screen_loading.dart';
import '../api/api.dart';
@ -33,35 +34,40 @@ class _CategorieScreenState extends State<CategorieScreen> {
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: _categories,
builder: (context, AsyncSnapshot<List<Tag>> snapshot) {
if (snapshot.connectionState != ConnectionState.done) {
return ScreenLoading();
}
return Scaffold(
appBar: AppBar(
title: Text("Temp"),
),
body: FutureBuilder(
future: _categories,
builder: (context, AsyncSnapshot<List<Tag>> snapshot) {
if (snapshot.connectionState != ConnectionState.done) {
return ScreenLoading();
}
if (snapshot.hasError) {
return Text("Error");
} else if (snapshot.hasData) {
return Padding(
padding: EdgeInsets.all(5),
child: SingleChildScrollView(
child: Wrap(
spacing: 5,
runSpacing: 5,
alignment: WrapAlignment.start,
children: snapshot.data!
.map((e) => TagTile(
tag: e,
))
.toList(growable: false),
),
),
);
} else {
return ScreenLoading();
}
},
);
if (snapshot.hasError) {
return Text("Error");
} else if (snapshot.hasData) {
return Padding(
padding: EdgeInsets.all(5),
child: SingleChildScrollView(
child: Wrap(
spacing: 5,
runSpacing: 5,
alignment: WrapAlignment.start,
children: snapshot.data!
.map((e) => TagTile(
tag: e,
))
.toList(growable: false),
),
),
);
} else {
return ScreenLoading();
}
},
),
drawer: MyDrawer());
}
}

View File

@ -1,6 +1,9 @@
import 'package:flutter/material.dart';
import '../DrawerPage.dart';
import '../api/token.dart';
import '../db/database.dart';
import '../login/logincontext.dart';
class SettingsScreen extends StatefulWidget {
const SettingsScreen({Key? key}) : super(key: key);
@ -15,33 +18,37 @@ class _SettingsScreenState extends State<SettingsScreen> {
@override
void initState() {
super.initState();
loadDBSize();
}
void loadDBSize() async {
final int cnt = (await Db().db().rawQuery("pragma page_count;"))[0]
["page_count"] as int;
final int pagesize =
(await Db().db().rawQuery("pragma page_size;"))[0]["page_size"] as int;
setState(() {
dbsize = cnt * pagesize;
});
Db().getDbSize().then((v) => setState(() {
dbsize = v;
}));
}
@override
Widget build(BuildContext context) {
return Column(
children: [
ElevatedButton(
onPressed: () async {
await Db().db().delete("previews");
// shrink the db file size
await Db().db().execute("VACUUM");
loadDBSize();
},
child: const Text("Delete cache!")),
Text("db size: ${dbsize / 1024} kb")
],
);
final loginCtx = LoginContext.of(context);
return Scaffold(
appBar: AppBar(
title: Text("Temp"),
),
body: Column(
children: [
ElevatedButton(
onPressed: () async {
await Db().clear();
Db().getDbSize().then((v) => setState(() {
dbsize = v;
}));
},
child: const Text("Delete cache!")),
Text("db size: ${dbsize / 1024} kb"),
ElevatedButton(onPressed: () {
loginCtx.onLoggin(false);
Token.getInstance().setToken("", "");
Db().clear();
}, child: Text("Logout"))
],
),
drawer: MyDrawer());
}
}

View File

@ -2,6 +2,7 @@ import 'dart:convert';
import 'dart:math';
import 'package:flutter/material.dart';
import '../DrawerPage.dart';
import '../preview/preview_grid.dart';
import '../api/api.dart';
import '../platform.dart';
@ -30,27 +31,33 @@ class _ShuffleScreenState extends State<ShuffleScreen> {
@override
Widget build(BuildContext context) {
double width = MediaQuery.of(context).size.width;
return PreviewGrid(
videoLoader: () {
return loadData((isTV() ? width ~/ 200 : width ~/ 275) * 2);
},
footerBuilder: (state) => Column(
children: [
const SizedBox(
height: 25,
return Scaffold(
appBar: AppBar(
title: Text("Temp"),
),
body: PreviewGrid(
videoLoader: () {
return loadData((isTV() ? width ~/ 200 : width ~/ 275) * 2);
},
footerBuilder: (state) => Column(
children: [
const SizedBox(
height: 25,
),
TextButton.icon(
onPressed: () {
state.loadData();
},
icon: const Icon(Icons.update),
label: const Text("Shuffle"),
),
const SizedBox(
height: 25,
),
],
),
TextButton.icon(
onPressed: () {
state.loadData();
},
icon: const Icon(Icons.update),
label: const Text("Shuffle"),
),
const SizedBox(
height: 25,
),
],
),
);
),
drawer: MyDrawer());
}
}

View File

@ -1,6 +1,7 @@
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:openmediacentermobile/DrawerPage.dart';
import '../api/api.dart';
import '../log/log.dart';
@ -36,8 +37,13 @@ class VideoFeedState extends State<VideoFeed> {
double width = MediaQuery.of(context).size.width;
Log.d(width);
return PreviewGrid(
videoLoader: () => loadData(),
);
return Scaffold(
appBar: AppBar(
title: Text(widget.tag?.tagName ?? "OpenMediaCenter"),
),
body: PreviewGrid(
videoLoader: () => loadData(),
),
drawer: widget.tag == null ? MyDrawer() : null);
}
}