Remove pull-to-refresh. Add new menu in header.

This commit is contained in:
Yegor Vialov 2019-02-10 22:33:46 +02:00
parent bdd1dc7e17
commit 983573388e
4 changed files with 52 additions and 54 deletions

View File

@ -23,7 +23,22 @@ class BadgeWidget extends StatelessWidget {
); );
break; break;
} }
case "sensor": case "camera":
case "media_player":
case "binary_sensor":
{
badgeIcon = MaterialDesignIcons.createIconWidgetFromEntityData(
entityModel.entityWrapper, iconSize, Colors.black);
break;
}
case "device_tracker":
{
badgeIcon = MaterialDesignIcons.createIconWidgetFromEntityData(
entityModel.entityWrapper, iconSize, Colors.black);
onBadgeTextValue = entityModel.entityWrapper.entity.state;
break;
}
default:
{ {
onBadgeTextValue = entityModel.entityWrapper.entity.unitOfMeasurement; onBadgeTextValue = entityModel.entityWrapper.entity.unitOfMeasurement;
badgeIcon = Center( badgeIcon = Center(
@ -37,18 +52,6 @@ class BadgeWidget extends StatelessWidget {
); );
break; break;
} }
case "device_tracker":
{
badgeIcon = MaterialDesignIcons.createIconWidgetFromEntityData(
entityModel.entityWrapper, iconSize, Colors.black);
onBadgeTextValue = entityModel.entityWrapper.entity.state;
break;
}
default:
{
badgeIcon = MaterialDesignIcons.createIconWidgetFromEntityData(
entityModel.entityWrapper, iconSize, Colors.black);
}
} }
Widget onBadgeText; Widget onBadgeText;
if (onBadgeTextValue == null || onBadgeTextValue.length == 0) { if (onBadgeTextValue == null || onBadgeTextValue.length == 0) {

View File

@ -155,7 +155,6 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
StreamSubscription _settingsSubscription; StreamSubscription _settingsSubscription;
StreamSubscription _serviceCallSubscription; StreamSubscription _serviceCallSubscription;
StreamSubscription _showEntityPageSubscription; StreamSubscription _showEntityPageSubscription;
StreamSubscription _refreshDataSubscription;
StreamSubscription _showErrorSubscription; StreamSubscription _showErrorSubscription;
bool _settingsLoaded = false; bool _settingsLoaded = false;
bool _accountMenuExpanded = false; bool _accountMenuExpanded = false;
@ -241,12 +240,6 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
}); });
} }
if (_refreshDataSubscription == null) {
_refreshDataSubscription = eventBus.on<RefreshDataEvent>().listen((event){
_refreshData();
});
}
if (_showErrorSubscription == null) { if (_showErrorSubscription == null) {
_showErrorSubscription = eventBus.on<ShowErrorEvent>().listen((event){ _showErrorSubscription = eventBus.on<ShowErrorEvent>().listen((event){
_showErrorBottomBar(message: event.text, errorCode: event.errorCode); _showErrorBottomBar(message: event.text, errorCode: event.errorCode);
@ -525,6 +518,26 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
pinned: true, pinned: true,
primary: true, primary: true,
title: Text(_homeAssistant != null ? _homeAssistant.locationName : ""), title: Text(_homeAssistant != null ? _homeAssistant.locationName : ""),
actions: <Widget>[
IconButton(
icon: Icon(MaterialDesignIcons.createIconDataFromIconName(
"mdi:dots-vertical"), color: Colors.white,),
onPressed: () {
showMenu(
position: RelativeRect.fromLTRB(MediaQuery.of(context).size.width, 70.0, 0.0, 0.0),
context: context,
items: [PopupMenuItem<String>(
child: new Text("Reload"),
value: "reload",
)]
).then((String val) {
if (val == "reload") {
_refreshData();
}
});
}
)
],
leading: IconButton( leading: IconButton(
icon: Icon(Icons.menu), icon: Icon(Icons.menu),
onPressed: () { onPressed: () {
@ -640,7 +653,6 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
if (_settingsSubscription != null) _settingsSubscription.cancel(); if (_settingsSubscription != null) _settingsSubscription.cancel();
if (_serviceCallSubscription != null) _serviceCallSubscription.cancel(); if (_serviceCallSubscription != null) _serviceCallSubscription.cancel();
if (_showEntityPageSubscription != null) _showEntityPageSubscription.cancel(); if (_showEntityPageSubscription != null) _showEntityPageSubscription.cancel();
if (_refreshDataSubscription != null) _refreshDataSubscription.cancel();
if (_showErrorSubscription != null) _showErrorSubscription.cancel(); if (_showErrorSubscription != null) _showErrorSubscription.cancel();
_homeAssistant.disconnect(); _homeAssistant.disconnect();
super.dispose(); super.dispose();

View File

@ -17,29 +17,17 @@ class ViewWidget extends StatefulWidget {
class ViewWidgetState extends State<ViewWidget> { class ViewWidgetState extends State<ViewWidget> {
StreamSubscription _refreshDataSubscription;
Completer _refreshCompleter;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_refreshDataSubscription = eventBus.on<RefreshDataFinishedEvent>().listen((event) {
if ((_refreshCompleter != null) && (!_refreshCompleter.isCompleted)) {
_refreshCompleter.complete();
}
});
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return RefreshIndicator( return ListView(
color: Colors.amber, padding: EdgeInsets.all(0.0),
child: ListView( //physics: const AlwaysScrollableScrollPhysics(),
padding: EdgeInsets.all(0.0), children: _buildChildren(context),
physics: const AlwaysScrollableScrollPhysics(),
children: _buildChildren(context),
),
onRefresh: () => _refreshData(),
); );
} }
@ -57,12 +45,22 @@ class ViewWidgetState extends State<ViewWidget> {
); );
} }
List<Widget> cards = [];
widget.view.cards.forEach((HACard card){ widget.view.cards.forEach((HACard card){
result.add( cards.add(
card.build(context) ConstrainedBox(
constraints: BoxConstraints(maxWidth: 500),
child: card.build(context),
)
); );
}); });
result.add(
Column (
children: cards,
)
);
return result; return result;
} }
@ -76,19 +74,8 @@ class ViewWidgetState extends State<ViewWidget> {
return result; return result;
} }
Future _refreshData() {
if ((_refreshCompleter != null) && (!_refreshCompleter.isCompleted)) {
Logger.d("Previous data refresh is still in progress");
} else {
_refreshCompleter = Completer();
eventBus.fire(RefreshDataEvent());
}
return _refreshCompleter.future;
}
@override @override
void dispose() { void dispose() {
_refreshDataSubscription.cancel();
super.dispose(); super.dispose();
} }

View File

@ -73,10 +73,6 @@ class SettingsChangedEvent {
SettingsChangedEvent(this.reconnect); SettingsChangedEvent(this.reconnect);
} }
class RefreshDataEvent {
RefreshDataEvent();
}
class RefreshDataFinishedEvent { class RefreshDataFinishedEvent {
RefreshDataFinishedEvent(); RefreshDataFinishedEvent();
} }