commit 089fc59d6c9c82605949faf173dda890e10ef095
parent 66c0919a91c7d567b8f7a71f14140c981831db7d
Author: Marcel <mtrnord1@gmail.com>
Date: Sun, 23 Feb 2020 14:59:05 +0100
Use Material design to drastically improve performance
Took 23 minutes
Diffstat:
9 files changed, 92 insertions(+), 86 deletions(-)
diff --git a/android/app/build.gradle b/android/app/build.gradle
@@ -51,6 +51,9 @@ android {
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
applicationIdSuffix '.release'
+
+ minifyEnabled true
+ shrinkResources true
}
debug {
applicationIdSuffix '.debug'
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
@@ -6,6 +6,8 @@
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
+ <uses-permission android:name="android.permission.INTERNET"/>
+
<application
android:name="io.flutter.app.FlutterApplication"
android:label="Bahnhofsfotos"
diff --git a/lib/blocs/MapBloc.dart b/lib/blocs/MapBloc.dart
@@ -23,7 +23,8 @@ class MapBloc extends Bloc<MapEvent, MapState> {
final List<Station> stations =
await railwayStationsRepository.getStations();
yield MapLoaded(stations: stations);
- } catch (_) {
+ } catch (e) {
+ debugPrint(e.toString());
yield MapError();
}
} else if (event is RenderMap) {
diff --git a/lib/components/LoginForm.dart b/lib/components/LoginForm.dart
@@ -39,15 +39,19 @@ class _LoginFormState extends State<LoginForm> {
},
child: BlocBuilder<LoginBloc, LoginState>(
builder: (context, state) {
- return SafeArea(
+ return Form(
child: Column(
children: [
- CupertinoTextField(
- placeholder: 'username',
+ TextFormField(
+ decoration: InputDecoration(
+ hintText: 'username',
+ ),
controller: _usernameController,
),
- CupertinoTextField(
- placeholder: 'password',
+ TextFormField(
+ decoration: InputDecoration(
+ hintText: 'password',
+ ),
controller: _passwordController,
obscureText: true,
),
diff --git a/lib/main.dart b/lib/main.dart
@@ -72,12 +72,11 @@ class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
- return CupertinoApp(
+ return MaterialApp(
title: 'Bahnhofsfotos',
- theme: CupertinoThemeData(
- brightness: Brightness.light,
+ theme: ThemeData(
primaryColor: Color(0xffc71c4d),
- primaryContrastingColor: Color(0xffD0C332),
+ accentColor: Color(0xffD0C332),
),
home: BlocBuilder<AuthenticationBloc, AuthenticationState>(
builder: (context, state) {
diff --git a/lib/views/HomePage.dart b/lib/views/HomePage.dart
@@ -8,52 +8,50 @@ import 'tabs/SettingsTab.dart';
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
- return CupertinoTabScaffold(
- tabBar: CupertinoTabBar(
- items: const <BottomNavigationBarItem>[
- BottomNavigationBarItem(
- icon: Icon(CupertinoIcons.location),
- title: Text('Map'),
+ return DefaultTabController(
+ length: 3,
+ child: Scaffold(
+ bottomNavigationBar: Container(
+ color: Theme.of(context).primaryColor,
+ child: TabBar(
+ labelColor: Colors.white,
+ unselectedLabelColor: Colors.white70,
+ indicatorSize: TabBarIndicatorSize.tab,
+ indicatorPadding: EdgeInsets.all(5.0),
+ indicatorColor: Theme.of(context).accentColor,
+ tabs: [
+ Tab(
+ icon: Icon(CupertinoIcons.location),
+ text: 'Map',
+ ),
+ Tab(
+ icon: Icon(CupertinoIcons.info),
+ text: 'Rangliste',
+ ),
+ Tab(
+ icon: Icon(CupertinoIcons.settings),
+ text: 'Einstellungen',
+ ),
+ ],
),
- BottomNavigationBarItem(
- icon: Icon(CupertinoIcons.info),
- title: Text('Rangliste'),
- ),
- BottomNavigationBarItem(
- icon: Icon(CupertinoIcons.settings),
- title: Text('Einstellungen'),
- ),
- ],
- ),
- tabBuilder: (context, index) {
- switch (index) {
- case 0:
- return CupertinoTabView(builder: (context) {
- return CupertinoPageScaffold(
- child: MapTab(),
- );
- });
- case 1:
- return CupertinoTabView(builder: (context) {
- return CupertinoPageScaffold(
- child: Container(),
- );
- });
- case 2:
- return CupertinoTabView(builder: (context) {
- return CupertinoPageScaffold(
- navigationBar: CupertinoNavigationBar(
- middle: Text("Einstellungen"),
- ),
- child: SettingsTab(),
- );
- });
- }
- return CupertinoPageScaffold(
- child: Container(),
- );
- },
- /* child: Container(
+ ),
+ body: TabBarView(
+ children: [
+ Scaffold(
+ body: MapTab(),
+ ),
+ Scaffold(
+ body: Container(),
+ ),
+ Scaffold(
+ appBar: AppBar(
+ title: Text("Einstellungen"),
+ ),
+ body: SettingsTab(),
+ ),
+ ],
+ ),
+ /* child: Container(
child: Center(
child: RaisedButton(
child: Text('logout'),
@@ -62,6 +60,7 @@ class HomePage extends StatelessWidget {
},
)),
),*/
+ ),
);
}
}
diff --git a/lib/views/LoginPage.dart b/lib/views/LoginPage.dart
@@ -2,12 +2,12 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
-
import 'package:flutter_bloc/flutter_bloc.dart';
-import '../repos/UserRepository.dart';
-import '../blocs/LoginBloc.dart';
+
import '../blocs/AuthenticationBloc.dart';
+import '../blocs/LoginBloc.dart';
import '../components/LoginForm.dart';
+import '../repos/UserRepository.dart';
class LoginPage extends StatelessWidget {
final UserRepository userRepository;
@@ -18,11 +18,11 @@ class LoginPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
- return CupertinoPageScaffold(
- navigationBar: CupertinoNavigationBar(
- middle: const Text('Login'),
+ return Scaffold(
+ appBar: AppBar(
+ title: const Text('Login'),
),
- child: BlocProvider(
+ body: BlocProvider(
create: (context) {
return LoginBloc(
authenticationBloc: BlocProvider.of<AuthenticationBloc>(context),
diff --git a/lib/views/SplashPage.dart b/lib/views/SplashPage.dart
@@ -4,8 +4,8 @@ import 'package:flutter/material.dart';
class SplashPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
- return CupertinoPageScaffold(
- child: Center(
+ return Scaffold(
+ body: Center(
// TODO fix placeholder
child: Text('Splash Screen'),
),
diff --git a/lib/views/tabs/SettingsTab.dart b/lib/views/tabs/SettingsTab.dart
@@ -13,28 +13,26 @@ class SettingsTabState extends State<SettingsTab>
Widget build(BuildContext context) {
super.build(context);
- return Material(
- child: SettingsList(sections: [
- SettingsSection(
- title: 'Bahnhofsdaten',
- tiles: [
- SettingsTile(
- title: 'Länderdaten aktualisieren',
- leading: Icon(Icons.language),
- onTap: () {},
- ),
- ],
- ),
- SettingsSection(
- title: 'Lizensierung',
- tiles: [],
- ),
- SettingsSection(
- title: 'Verlinkung',
- tiles: [],
- ),
- ]),
- );
+ return SettingsList(sections: [
+ SettingsSection(
+ title: 'Bahnhofsdaten',
+ tiles: [
+ SettingsTile(
+ title: 'Länderdaten aktualisieren',
+ leading: Icon(Icons.language),
+ onTap: () {},
+ ),
+ ],
+ ),
+ SettingsSection(
+ title: 'Lizensierung',
+ tiles: [],
+ ),
+ SettingsSection(
+ title: 'Verlinkung',
+ tiles: [],
+ ),
+ ]);
}
@override