Started implementing flutter_platform_widgets

Signed-off-by: Andreas Fahrecker <AndreasFahrecker@gmail.com>
This commit is contained in:
Andreas Fahrecker 2021-03-09 19:32:39 +01:00
parent 40bdcc44f9
commit ed5d2b92f7
5 changed files with 119 additions and 24 deletions

View File

@ -1,10 +1,11 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_platform_widgets/flutter_platform_widgets.dart';
import 'package:flutter_redux/flutter_redux.dart'; import 'package:flutter_redux/flutter_redux.dart';
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import 'package:time_progress_tracker/models/app_state.dart'; import 'package:time_progress_tracker/models/app_state.dart';
import 'package:time_progress_tracker/screens/progress_creation_screen.dart'; import 'package:time_progress_tracker/screens/dashboard_screen.dart';
import 'package:time_progress_tracker/screens/home_screen.dart'; import 'package:time_progress_tracker/utils/color_utils.dart';
import 'package:time_progress_tracker/screens/progress_detail_screen.dart';
class TimeProgressTrackerApp extends StatelessWidget { class TimeProgressTrackerApp extends StatelessWidget {
static const String name = "Time Progress Tracker"; static const String name = "Time Progress Tracker";
@ -20,23 +21,11 @@ class TimeProgressTrackerApp extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return StoreProvider( return StoreProvider(
store: store, store: store,
child: MaterialApp( child: PlatformApp(
title: name, title: name,
theme: ThemeData( home: DashboardScreen(),
primarySwatch: Colors.indigo, material: (_, __) => MaterialAppData(theme: materialThemeData),
accentColor: Colors.indigoAccent, cupertino: (_, __) => CupertinoAppData(theme: cupertinoThemeData),
brightness: Brightness.light,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
initialRoute: HomeScreen.routeName,
routes: {
HomeScreen.routeName: (BuildContext context) =>
HomeScreen(),
ProgressDetailScreen.routeName: (BuildContext context) =>
ProgressDetailScreen(),
ProgressCreationScreen.routeName: (BuildContext context) =>
ProgressCreationScreen(),
},
), ),
); );
} }

View File

@ -0,0 +1,82 @@
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_platform_widgets/flutter_platform_widgets.dart';
import 'package:time_progress_tracker/utils/color_utils.dart';
import 'package:time_progress_tracker/widgets/home/tabs/home_active_progresses_tab.dart';
import 'package:time_progress_tracker/widgets/home/tabs/home_inactive_progresses_tab.dart';
import 'package:time_progress_tracker/widgets/home/tabs/home_settings_tab.dart';
class DashboardScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() => _DashboardScreenState();
}
class _DashboardScreenState extends State<DashboardScreen> {
int _tabSelectedIndex = 0;
String title = "Active Progresses";
Widget _renderTabScreen(int tabIndex) {
switch (tabIndex) {
case 1:
return HomeInactiveProgressesTab();
case 2:
return HomeSettingsTab();
default:
return HomeActiveProgressesTab();
}
}
String getScreenTitle(int tabIndex) {
switch (tabIndex) {
case 1:
return "Inactive Progresses";
case 2:
return "Settings";
default:
return "ActiveProgresses";
}
}
@override
Widget build(BuildContext context) {
return PlatformScaffold(
appBar: PlatformAppBar(
title: Text(
title,
style: toolbarTextStyle,
),
cupertino: (_, __) => CupertinoNavigationBarData(
transitionBetweenRoutes: false,
),
),
material: (_, __) => MaterialScaffoldData(),
body: _renderTabScreen(_tabSelectedIndex),
bottomNavBar: PlatformNavBar(
currentIndex: _tabSelectedIndex,
itemChanged: (index) {
setState(() {
_tabSelectedIndex = index;
title = getScreenTitle(index);
});
},
backgroundColor: bottomTabsBackground,
items: [
BottomNavigationBarItem(
icon: Icon(Icons.alarm, color: Colors.grey),
label: "Active Progresses",
activeIcon: Icon(Icons.alarm, color: Colors.white),
),
BottomNavigationBarItem(
icon: Icon(Icons.alarm_off, color: Colors.grey),
label: "Inactive Progresses",
activeIcon: Icon(Icons.alarm_off, color: Colors.white),
),
BottomNavigationBarItem(
icon: Icon(Icons.settings, color: Colors.grey),
label: "Settings",
activeIcon: Icon(Icons.settings, color: Colors.white),
)
]),
);
}
}

View File

@ -0,0 +1,20 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
final ThemeData materialThemeData = ThemeData(
primarySwatch: Colors.indigo,
scaffoldBackgroundColor: Colors.white,
accentColor: Colors.indigo,
appBarTheme: AppBarTheme(color: Colors.indigo.shade600),
primaryColor: Colors.indigo,
secondaryHeaderColor: Colors.indigo,
canvasColor: Colors.indigo,
backgroundColor: Colors.red,
);
final CupertinoThemeData cupertinoThemeData = CupertinoThemeData(
primaryColor: Colors.indigo,
barBackgroundColor: Colors.indigo,
scaffoldBackgroundColor: Colors.white,
);
final toolbarTextStyle = TextStyle(color: Colors.white, fontSize: 16);
final bottomTabsBackground = Colors.indigoAccent;

View File

@ -127,6 +127,13 @@ packages:
url: "git://github.com/yangyxd/flutter_picker.git" url: "git://github.com/yangyxd/flutter_picker.git"
source: git source: git
version: "1.1.5" version: "1.1.5"
flutter_platform_widgets:
dependency: "direct main"
description:
name: flutter_platform_widgets
url: "https://pub.dartlang.org"
source: hosted
version: "0.80.0"
flutter_redux: flutter_redux:
dependency: "direct main" dependency: "direct main"
description: description:
@ -375,4 +382,4 @@ packages:
version: "2.2.1" version: "2.2.1"
sdks: sdks:
dart: ">=2.12.0-259.9.beta <3.0.0" dart: ">=2.12.0-259.9.beta <3.0.0"
flutter: ">=1.20.0" flutter: ">=1.20.4"

View File

@ -27,14 +27,11 @@ dependencies:
flutter_redux: flutter_redux:
flutter_picker: flutter_picker:
git: git://github.com/yangyxd/flutter_picker.git git: git://github.com/yangyxd/flutter_picker.git
flutter_platform_widgets:
meta: meta:
percent_indicator: percent_indicator:
redux: redux:
shared_preferences: shared_preferences:
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.3 cupertino_icons: ^0.1.3
dev_dependencies: dev_dependencies: