Add Lokinet Logo
This commit is contained in:
parent
8770f59109
commit
3b153c976b
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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("+")
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue