Add Lokinet Logo

This commit is contained in:
Konstantin Ullrich 2021-05-20 22:24:49 +02:00
parent 8770f59109
commit 3b153c976b
No known key found for this signature in database
GPG Key ID: E9562A013280F5DB
10 changed files with 68 additions and 284 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,5 +1,7 @@
import 'package:flutter/material.dart';
import 'package:lokinet_lib/lokinet_lib.dart';
import 'package:lokinet_mobile/src/widget/lokinet_divider.dart';
import 'package:lokinet_mobile/src/widget/themed_lokinet_logo.dart';
void main() {
runApp(MyApp());
@ -56,7 +58,11 @@ class MyHomePageState extends State<MyHomePage> {
final key = new GlobalKey<ScaffoldState>();
return Scaffold(
key: key,
body: MyForm()
body: Column(children: [
ThemedLokinetLogo(),
LokinetDivider(),
MyForm()
])
);
}
}
@ -74,12 +80,17 @@ class MyFormState extends State<MyForm> {
Widget build(BuildContext context) {
final key = new GlobalKey<FormState>();
final textInput = TextEditingController();
var brightness = MediaQuery.of(context).platformBrightness;
bool darkModeOn = brightness == Brightness.dark;
return Form(
key: key,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
IconButton(
iconSize: 160,
onPressed: () async {

View File

@ -0,0 +1,7 @@
import 'package:flutter/material.dart';
bool inDarkMode(BuildContext context) {
return false;
var brightness = MediaQuery.of(context).platformBrightness;
return brightness == Brightness.dark;
}

View File

@ -0,0 +1,27 @@
import 'package:flutter/material.dart';
import 'package:lokinet_mobile/src/utils/is_dakmode.dart';
class LokinetDivider extends StatelessWidget {
@override
Widget build(BuildContext context) {
final color = inDarkMode(context) ? Colors.white : Colors.black;
return Padding(
padding: EdgeInsets.only(left: 20, right: 20, top: 5, bottom: 5),
child: Row(
children: [
Text("+"),
Expanded(
child: new Container(
margin: const EdgeInsets.only(left: 10.0, right: 20.0),
child: Divider(
color: color,
height: 0,
)),
),
Text("+")
],
),
);
}
}

View File

@ -1,101 +0,0 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:oxen_service_node/src/utils/theme/theme_changer.dart';
import 'package:oxen_service_node/src/utils/theme/themes.dart';
import 'package:provider/provider.dart';
class OxenAppBar extends StatelessWidget
implements ObstructingPreferredSizeWidget {
factory OxenAppBar(
{BuildContext context,
Widget leading,
Widget middle,
Widget trailing,
Color backgroundColor}) {
final _themeChanger = Provider.of<ThemeChanger>(context);
final _isDarkTheme = _themeChanger.theme == Themes.darkTheme;
return OxenAppBar._internal(
leading: leading,
middle: middle,
trailing: trailing,
height: _height,
backgroundColor:
_isDarkTheme ? Theme.of(context).backgroundColor : backgroundColor);
}
factory OxenAppBar.withShadow(
{BuildContext context,
Widget leading,
Widget middle,
Widget trailing,
Color backgroundColor}) {
final _themeChanger = Provider.of<ThemeChanger>(context);
final _isDarkTheme = _themeChanger.theme == Themes.darkTheme;
return OxenAppBar._internal(
leading: leading,
middle: middle,
trailing: trailing,
height: 80,
backgroundColor:
_isDarkTheme ? Theme.of(context).backgroundColor : backgroundColor,
decoration: BoxDecoration(
color: _isDarkTheme
? Theme.of(context).backgroundColor
: backgroundColor,
boxShadow: [
BoxShadow(
color: Color.fromRGBO(132, 141, 198, 0.11),
blurRadius: 8,
offset: Offset(0, 2))
]),
);
}
OxenAppBar._internal(
{this.leading,
this.middle,
this.trailing,
this.backgroundColor,
this.decoration,
this.height = _height});
static const _originalHeight = 44.0; // iOS nav bar height
static const _height = 60.0;
final Widget leading;
final Widget middle;
final Widget trailing;
final Color backgroundColor;
final BoxDecoration decoration;
final double height;
@override
Widget build(BuildContext context) {
final pad = height - _originalHeight;
final paddingTop = pad / 2;
final _paddingBottom = (pad / 2);
return Container(
decoration: decoration ?? BoxDecoration(color: backgroundColor),
padding:
EdgeInsetsDirectional.only(bottom: _paddingBottom, top: paddingTop),
child: CupertinoNavigationBar(
leading: leading,
middle: middle,
trailing: trailing,
backgroundColor: backgroundColor,
border: null,
),
);
}
@override
Size get preferredSize => Size.fromHeight(height);
@override
bool shouldFullyObstruct(BuildContext context) {
return false;
}
}

View File

@ -1,57 +0,0 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:oxen_service_node/src/utils/theme/palette.dart';
class OxenTextField extends StatelessWidget {
OxenTextField(
{this.enabled = true,
this.hintText,
this.keyboardType,
this.controller,
this.validator,
this.inputFormatters,
this.prefixIcon,
this.suffixIcon,
this.focusNode});
final bool enabled;
final String hintText;
final TextInputType keyboardType;
final TextEditingController controller;
final String Function(String) validator;
final List<TextInputFormatter> inputFormatters;
final Widget prefixIcon;
final Widget suffixIcon;
final FocusNode focusNode;
@override
Widget build(BuildContext context) {
return TextFormField(
onFieldSubmitted: (_) => FocusScope.of(context).unfocus(),
enabled: enabled,
controller: controller,
focusNode: focusNode,
style: TextStyle(
fontSize: 18.0,
color: Theme.of(context).accentTextTheme.overline.color),
keyboardType: keyboardType,
inputFormatters: inputFormatters,
decoration: InputDecoration(
prefixIcon: prefixIcon,
suffixIcon: suffixIcon,
hintStyle:
TextStyle(fontSize: 18.0, color: Theme.of(context).hintColor),
hintText: hintText,
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: OxenPalette.teal, width: 2.0)),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Theme.of(context).focusColor, width: 1.0)),
errorBorder: OutlineInputBorder(
borderSide: BorderSide(color: OxenPalette.red, width: 1.0)),
focusedErrorBorder: OutlineInputBorder(
borderSide: BorderSide(color: OxenPalette.red, width: 1.0)),
errorStyle: TextStyle(color: OxenPalette.red)),
validator: validator);
}
}

View File

@ -1,122 +0,0 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:oxen_service_node/src/utils/theme/theme_changer.dart';
import 'package:oxen_service_node/src/utils/theme/themes.dart';
import 'package:provider/provider.dart';
import 'oxen/oxen_app_bar.dart';
enum AppBarStyle { regular, withShadow }
abstract class OxenBasePage extends StatelessWidget {
String get title => null;
bool get isModalBackButton => false;
Color get backgroundColor => Colors.white;
bool get resizeToAvoidBottomPadding => true;
AppBarStyle get appBarStyle => AppBarStyle.regular;
void onClose(BuildContext context) => Navigator.of(context).pop();
final GlobalKey<ScaffoldState> scaffoldKey = new GlobalKey<ScaffoldState>();
Widget leading(BuildContext context) {
if (ModalRoute.of(context).isFirst) {
return null;
}
final _backButton = Icon(Icons.arrow_back_ios_sharp, size: 25);
final _closeButton = Icon(Icons.close_sharp, size: 25);
return SizedBox(
height: 37,
width: isModalBackButton ? 37 : 20,
child: ButtonTheme(
minWidth: double.minPositive,
child: FlatButton(
highlightColor: Colors.transparent,
splashColor: Colors.transparent,
padding: EdgeInsets.all(0),
onPressed: () => onClose(context),
child: isModalBackButton ? _closeButton : _backButton),
),
);
}
Widget middle(BuildContext context) {
return title == null
? null
: Text(
title,
style: TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.w600,
color: Theme.of(context).primaryTextTheme.headline6.color),
);
}
Widget trailing(BuildContext context) => null;
Widget floatingActionButton(BuildContext context) => null;
ObstructingPreferredSizeWidget appBar(BuildContext context) {
final _themeChanger = Provider.of<ThemeChanger>(context);
final _isDarkTheme = _themeChanger.theme == Themes.darkTheme;
switch (appBarStyle) {
case AppBarStyle.regular:
return OxenAppBar(
context: context,
leading: leading(context),
middle: middle(context),
trailing: trailing(context),
backgroundColor: _isDarkTheme
? Theme.of(context).backgroundColor
: backgroundColor);
case AppBarStyle.withShadow:
return OxenAppBar.withShadow(
context: context,
leading: leading(context),
middle: middle(context),
trailing: trailing(context),
backgroundColor: _isDarkTheme
? Theme.of(context).backgroundColor
: backgroundColor);
default:
return OxenAppBar(
context: context,
leading: leading(context),
middle: middle(context),
trailing: trailing(context),
backgroundColor: _isDarkTheme
? Theme.of(context).backgroundColor
: backgroundColor);
}
}
Widget body(BuildContext context);
Widget bottomNavigationBar(BuildContext context) => null;
@override
Widget build(BuildContext context) {
final _themeChanger = Provider.of<ThemeChanger>(context);
final _isDarkTheme = _themeChanger.theme == Themes.darkTheme;
return Scaffold(
key: scaffoldKey,
backgroundColor:
_isDarkTheme ? Theme.of(context).backgroundColor : backgroundColor,
resizeToAvoidBottomPadding: resizeToAvoidBottomPadding,
appBar: appBar(context),
body: SafeArea(child: body(context)),
floatingActionButton: floatingActionButton(context),
bottomNavigationBar: bottomNavigationBar(context),
floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat);
}
}

View File

@ -0,0 +1,19 @@
import 'package:flutter/material.dart';
import 'package:lokinet_mobile/src/utils/is_dakmode.dart';
class ThemedLokinetLogo extends StatelessWidget {
@override
Widget build(BuildContext context) {
final lokinetLogo = inDarkMode(context)
? "assets/images/Lokinet_Text_White.png"
: "assets/images/Lokinet_Text_Black.png";
return Padding(
padding: EdgeInsets.all(50),
child: Image.asset(
lokinetLogo,
width: MediaQuery.of(context).size.width * 0.60,
),
);
}
}

View File

@ -56,9 +56,9 @@ flutter:
uses-material-design: true
# To add assets to your application, add an assets section, like this:
# assets:
# - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg
assets:
- assets/images/Lokinet_Text_Black.png
- assets/images/Lokinet_Text_White.png
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware.