blob: 9550265b164885ede172f307976940efceca5477 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:sky/rendering/sky_binding.dart';
import 'package:sky/theme/colors.dart' as colors;
import 'package:sky/theme/theme_data.dart';
import 'package:sky/widgets/basic.dart';
import 'package:sky/widgets/navigator.dart';
import 'package:sky/widgets/theme.dart';
import 'package:sky/widgets/widget.dart';
import 'stock_data.dart';
import 'stock_home.dart';
import 'stock_settings.dart';
import 'stock_types.dart';
class StocksApp extends App {
NavigationState _navigationState;
StocksApp() {
_navigationState = new NavigationState([
new Route(
name: '/',
builder: (navigator, route) => new StockHome(navigator, _stocks, stockMode, modeUpdater)
),
new Route(
name: '/settings',
builder: (navigator, route) => new StockSettings(navigator, stockMode, settingsUpdater)
),
]);
}
void onBack() {
setState(() {
_navigationState.pop();
});
// TODO(jackson): Need a way to invoke default back behavior here
}
StockMode stockMode = StockMode.optimistic;
void modeUpdater(StockMode value) {
setState(() {
stockMode = value;
});
}
void settingsUpdater({StockMode mode}) {
setState(() {
if (mode != null)
stockMode = mode;
});
}
final List<Stock> _stocks = [];
void didMount() {
super.didMount();
new StockDataFetcher((StockData data) {
setState(() {
data.appendTo(_stocks);
});
});
}
Widget build() {
return new Theme(
data: new ThemeData.light(
primary: colors.Purple,
accent: colors.RedAccent,
darkToolbar: true),
child: new Navigator(_navigationState)
);
}
}
void main() {
print("starting stocks app!");
runApp(new StocksApp());
SkyBinding.instance.onFrame = () {
// uncomment this for debugging:
// SkyBinding.instance.debugDumpRenderTree();
};
}