This commit is contained in:
2021-12-10 11:40:20 +01:00
commit 75e56819b8
70 changed files with 1826 additions and 0 deletions

57
lib/app.dart Normal file
View File

@ -0,0 +1,57 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:logger/logger.dart';
import 'package:openmediacentermobile/login_screen.dart';
import 'package:openmediacentermobile/token.dart';
import 'video_feed.dart';
class App extends StatefulWidget {
App({Key? key}) : super(key: key) {}
@override
State<StatefulWidget> createState() {
return AppState();
}
}
class AppState extends State<App> {
String? loggedin = null;
onLogin() {
setState(() {
loggedin = "ddd";
});
}
@override
Widget build(BuildContext context) {
if (loggedin == null) {
return const CircularProgressIndicator();
} else if (loggedin == "") {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text("Login"),
),
body: LoginScreen(onLogin: onLogin)));
} else {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text("Openmediacenter"),
),
body: VideoFeed()));
}
}
AppState() {
final token = Token.getInstance();
token.getToken().then((value) {
Logger().i("The token value is $value");
setState(() {
loggedin = value;
});
});
}
}

18
lib/login_screen.dart Normal file
View File

@ -0,0 +1,18 @@
import 'package:flutter/material.dart';
class LoginScreen extends StatefulWidget {
const LoginScreen({Key? key, this.onLogin}) : super(key: key);
final onLogin;
@override
_LoginScreenState createState() => _LoginScreenState();
}
class _LoginScreenState extends State<LoginScreen> {
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: this.widget.onLogin, child: Text("klick meee"));
}
}

9
lib/main.dart Normal file
View File

@ -0,0 +1,9 @@
import 'package:flutter/material.dart';
import 'package:logger/logger.dart';
import 'package:openmediacentermobile/app.dart';
// main app entry point
void main() {
Logger().i("App init!");
runApp(App());
}

26
lib/preview_tile.dart Normal file
View File

@ -0,0 +1,26 @@
import 'dart:convert';
import 'package:flutter/material.dart';
class VideoPreview {
String thumbnail;
String title;
int id;
VideoPreview(this.thumbnail, this.title, this.id);
}
class PreviewTile extends StatelessWidget {
const PreviewTile({Key? key, required this.dta}) : super(key: key);
final VideoPreview dta;
@override
Widget build(BuildContext context) {
return InkWell(
child: Column(
children: [Text(dta.title), Image.memory(base64Decode(dta.thumbnail))],
),
);
}
}

42
lib/token.dart Normal file
View File

@ -0,0 +1,42 @@
import 'dart:async';
import 'package:flutter/widgets.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:logger/logger.dart';
class Token {
static final Token _token = Token._();
final _storage = const FlutterSecureStorage();
final _l = Logger();
String _tokenval = "";
static Token getInstance() {
return _token;
}
Future<String?> _readToken() async {
_l.d("reading token store");
WidgetsFlutterBinding.ensureInitialized();
return _storage.read(key: 'jwt');
}
Future<String> getToken() async {
var completer = Completer<String>();
if (_tokenval == "") {
final token = await _readToken();
completer.complete(token);
} else {
completer.complete(_tokenval);
}
return completer.future;
}
void setToken(String token) {
_tokenval = token;
_storage.write(key: 'jwt', value: token);
}
Token._();
}

29
lib/video_feed.dart Normal file

File diff suppressed because one or more lines are too long