Dashboard
This commit is contained in:
parent
6b05865390
commit
728a06c720
|
|
@ -0,0 +1,32 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
||||
import 'package:invoiceninja_flutter/ui/dashboard/dashboard_vm.dart';
|
||||
|
||||
class DashboardActivity extends StatelessWidget {
|
||||
|
||||
const DashboardActivity({
|
||||
Key key,
|
||||
@required this.viewModel,
|
||||
}) : super(key: key);
|
||||
|
||||
final DashboardVM viewModel;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (!viewModel.dashboardState.isLoaded) {
|
||||
return LoadingIndicator();
|
||||
}
|
||||
|
||||
final activities = viewModel.dashboardState.data.activities;
|
||||
|
||||
return ListView.builder(
|
||||
itemCount: activities.length,
|
||||
itemBuilder: (BuildContext context, index) {
|
||||
final activity = activities[index];
|
||||
return ListTile(
|
||||
title: Text(activity.key),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
||||
import 'package:invoiceninja_flutter/ui/dashboard/dashboard_vm.dart';
|
||||
|
||||
class DashboardOverview extends StatelessWidget {
|
||||
|
||||
const DashboardOverview({
|
||||
Key key,
|
||||
@required this.viewModel,
|
||||
}) : super(key: key);
|
||||
|
||||
final DashboardVM viewModel;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (!viewModel.dashboardState.isLoaded) {
|
||||
return LoadingIndicator();
|
||||
}
|
||||
|
||||
return new Container();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,3 +1,5 @@
|
|||
import 'package:invoiceninja_flutter/ui/dashboard/dashboard_activity.dart';
|
||||
import 'package:invoiceninja_flutter/ui/dashboard/dashboard_overview.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
|
|
|||
|
|
@ -9,6 +9,9 @@ class DashboardScreen extends StatelessWidget {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return DashboardBuilder();
|
||||
|
||||
/*
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text(AppLocalization.of(context).dashboard),
|
||||
|
|
@ -16,5 +19,6 @@ class DashboardScreen extends StatelessWidget {
|
|||
drawer: AppDrawerBuilder(),
|
||||
body: DashboardBuilder(),
|
||||
);
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,94 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/app_drawer_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/dashboard/dashboard_activity.dart';
|
||||
import 'package:invoiceninja_flutter/ui/dashboard/dashboard_overview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/dashboard/dashboard_panels.dart';
|
||||
import 'package:invoiceninja_flutter/ui/dashboard/dashboard_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
||||
class DashboardView extends StatefulWidget {
|
||||
final DashboardVM viewModel;
|
||||
|
||||
const DashboardView({
|
||||
Key key,
|
||||
@required this.viewModel,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
_DashboardViewState createState() => new _DashboardViewState();
|
||||
}
|
||||
|
||||
class _DashboardViewState extends State<DashboardView>
|
||||
with SingleTickerProviderStateMixin {
|
||||
TabController _controller;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_controller = TabController(vsync: this, length: 2);
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_controller.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final localization = AppLocalization.of(context);
|
||||
|
||||
return Scaffold(
|
||||
drawer: AppDrawerBuilder(),
|
||||
appBar: AppBar(
|
||||
title: Text(AppLocalization.of(context).dashboard),
|
||||
bottom: TabBar(
|
||||
controller: _controller,
|
||||
tabs: [
|
||||
Tab(
|
||||
text: localization.overview,
|
||||
),
|
||||
Tab(
|
||||
text: localization.activity,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
body: CustomTabBarView(
|
||||
viewModel: widget.viewModel,
|
||||
controller: _controller,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class CustomTabBarView extends StatelessWidget {
|
||||
const CustomTabBarView({
|
||||
@required this.viewModel,
|
||||
@required this.controller,
|
||||
});
|
||||
|
||||
final DashboardVM viewModel;
|
||||
final TabController controller;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return TabBarView(
|
||||
controller: controller,
|
||||
children: <Widget>[
|
||||
RefreshIndicator(
|
||||
onRefresh: () => viewModel.onRefreshed(context),
|
||||
//child: DashboardOverview(viewModel: viewModel),
|
||||
child: DashboardPanels(
|
||||
viewModel: viewModel,
|
||||
),
|
||||
),
|
||||
RefreshIndicator(
|
||||
onRefresh: () => viewModel.onRefreshed(context),
|
||||
child: DashboardActivity(viewModel: viewModel),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -6,6 +6,7 @@ import 'package:flutter/widgets.dart';
|
|||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
import 'package:invoiceninja_flutter/redux/dashboard/dashboard_actions.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
|
||||
import 'package:invoiceninja_flutter/ui/dashboard/dashboard_view.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
import 'package:redux/redux.dart';
|
||||
import 'package:invoiceninja_flutter/ui/dashboard/dashboard_panels.dart';
|
||||
|
|
@ -20,7 +21,7 @@ class DashboardBuilder extends StatelessWidget {
|
|||
return StoreConnector<AppState, DashboardVM>(
|
||||
converter: DashboardVM.fromStore,
|
||||
builder: (context, vm) {
|
||||
return DashboardPanels(
|
||||
return DashboardView(
|
||||
viewModel: vm
|
||||
);
|
||||
},
|
||||
|
|
|
|||
|
|
@ -175,6 +175,7 @@ class AppLocalization {
|
|||
'restart_app_to_apply_change': 'Restart the app to apply the change',
|
||||
'refresh_data': 'Refresh Data',
|
||||
'blank_contact': 'Blank Contact',
|
||||
'activity': 'Activity',
|
||||
|
||||
'payment': 'Payment',
|
||||
'payments': 'Payments',
|
||||
|
|
@ -360,6 +361,7 @@ class AppLocalization {
|
|||
String get restartAppToApplyChange => _localizedValues[locale.languageCode]['restart_app_to_apply_change'];
|
||||
String get refreshData => _localizedValues[locale.languageCode]['refresh_data'];
|
||||
String get blankContact => _localizedValues[locale.languageCode]['blank_contact'];
|
||||
String get activity => _localizedValues[locale.languageCode]['activity'];
|
||||
|
||||
String get payment => _localizedValues[locale.languageCode]['payment'];
|
||||
String get payments => _localizedValues[locale.languageCode]['payments'];
|
||||
|
|
|
|||
Loading…
Reference in New Issue