part of 'main.dart'; class EntityViewPage extends StatefulWidget { EntityViewPage({Key key, this.entity}) : super(key: key); Entity entity; @override _EntityViewPageState createState() => new _EntityViewPageState(); } class _EntityViewPageState extends State { String _title; Entity _entity; String _lastState; StreamSubscription _stateSubscription; @override void initState() { super.initState(); _entity = widget.entity; _lastState = _entity.state; if (_stateSubscription != null) _stateSubscription.cancel(); _stateSubscription = eventBus.on().listen((event) { setState(() { if (event.entityId == _entity.entityId) { _lastState = event.newState ?? _entity.state; } }); }); _prepareData(); } _prepareData() async { _title = _entity.displayName; } @override Widget build(BuildContext context) { return new Scaffold( appBar: new AppBar( leading: IconButton(icon: Icon(Icons.arrow_back), onPressed: (){ Navigator.pop(context); }), // Here we take the value from the MyHomePage object that was created by // the App.build method, and use it to set our appbar title. title: new Text(_title), ), body: Padding( padding: EdgeInsets.all(10.0), child: ListView( children: [ _entity.buildExtendedWidget(context, _lastState) ], ), ), ); } @override void dispose(){ if (_stateSubscription != null) _stateSubscription.cancel(); super.dispose(); } }