diff --git a/assets/images/Lokinet_Text_Black.png b/assets/images/Lokinet_Text_Black.png new file mode 100644 index 0000000..a3acac7 Binary files /dev/null and b/assets/images/Lokinet_Text_Black.png differ diff --git a/assets/images/Lokinet_Text_White.png b/assets/images/Lokinet_Text_White.png new file mode 100644 index 0000000..4be35c1 Binary files /dev/null and b/assets/images/Lokinet_Text_White.png differ diff --git a/lib/main.dart b/lib/main.dart index 71aad1a..064e988 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -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 { final key = new GlobalKey(); return Scaffold( key: key, - body: MyForm() + body: Column(children: [ + ThemedLokinetLogo(), + LokinetDivider(), + MyForm() + ]) ); } } @@ -74,12 +80,17 @@ class MyFormState extends State { Widget build(BuildContext context) { final key = new GlobalKey(); final textInput = TextEditingController(); + + var brightness = MediaQuery.of(context).platformBrightness; + bool darkModeOn = brightness == Brightness.dark; + return Form( key: key, child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ + IconButton( iconSize: 160, onPressed: () async { diff --git a/lib/src/utils/is_dakmode.dart b/lib/src/utils/is_dakmode.dart new file mode 100644 index 0000000..18f3418 --- /dev/null +++ b/lib/src/utils/is_dakmode.dart @@ -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; +} diff --git a/lib/src/widget/lokinet_divider.dart b/lib/src/widget/lokinet_divider.dart new file mode 100644 index 0000000..47beeed --- /dev/null +++ b/lib/src/widget/lokinet_divider.dart @@ -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("+") + ], + ), + ); + } +} diff --git a/lib/src/widget/oxen/oxen_app_bar.dart b/lib/src/widget/oxen/oxen_app_bar.dart deleted file mode 100644 index e0dc429..0000000 --- a/lib/src/widget/oxen/oxen_app_bar.dart +++ /dev/null @@ -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(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(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; - } -} diff --git a/lib/src/widget/oxen/oxen_text_field.dart b/lib/src/widget/oxen/oxen_text_field.dart deleted file mode 100644 index 367e65b..0000000 --- a/lib/src/widget/oxen/oxen_text_field.dart +++ /dev/null @@ -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 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); - } -} diff --git a/lib/src/widget/oxen_base_page.dart b/lib/src/widget/oxen_base_page.dart deleted file mode 100644 index d7dba6d..0000000 --- a/lib/src/widget/oxen_base_page.dart +++ /dev/null @@ -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 scaffoldKey = new GlobalKey(); - - 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(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(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); - } -} diff --git a/lib/src/widget/themed_lokinet_logo.dart b/lib/src/widget/themed_lokinet_logo.dart new file mode 100644 index 0000000..ccf0c35 --- /dev/null +++ b/lib/src/widget/themed_lokinet_logo.dart @@ -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, + ), + ); + } +} diff --git a/pubspec.yaml b/pubspec.yaml index f66dd16..1fc7eac 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -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.