aboutsummaryrefslogtreecommitdiff
path: root/lib/pages/Home.dart
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pages/Home.dart')
-rw-r--r--lib/pages/Home.dart77
1 files changed, 53 insertions, 24 deletions
diff --git a/lib/pages/Home.dart b/lib/pages/Home.dart
index f2809db..d4c8d19 100644
--- a/lib/pages/Home.dart
+++ b/lib/pages/Home.dart
@@ -2,40 +2,69 @@ import 'dart:async';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
-class HomeView extends StatelessWidget {
+class StatusInfoCard extends StatelessWidget {
Stream<DateTime> time$;
DateTime defaultTime;
+ StatusInfoCard(this.time$, { this.defaultTime }): super();
+
final timeFormat = new DateFormat.jm(); // hm fr 24 hrs
final dateFormat = DateFormat('d MMMM');
+
+ @override
+ Widget build(BuildContext ctx) {
+ return StreamBuilder<DateTime>(
+ stream: time$,
+ initialData: defaultTime,
+ builder: (BuildContext context, AsyncSnapshot<DateTime> snapshot) {
+ Widget child = Text('Loading...', key: Key('loading'));
+
+ if (snapshot.hasData) {
+ child = Column(children: [
+ Text(timeFormat.format(snapshot.data), key: Key('time')),
+ Text(dateFormat.format(snapshot.data), key: Key('date')),
+ ]);
+ }
+
+ return Container(
+ height: 300,
+ child: child,
+ );
+ },
+ );
+ }
+}
+
+class HomeView extends StatelessWidget {
+ Stream<DateTime> time$;
+ DateTime defaultTime;
- HomeView({ this.time$, this.defaultTime }): super();
+ HomeView(this.time$, { this.defaultTime }): super();
@override
Widget build(BuildContext ctx) {
- return Container(
- padding: const EdgeInsets.symmetric(vertical: 32.0, horizontal: 16.0),
- child: Column(
- children: [
- StreamBuilder<DateTime>(
- stream: time$,
- initialData: defaultTime,
- builder: (BuildContext context, AsyncSnapshot<DateTime> snapshot) {
- switch (snapshot.connectionState) {
- case ConnectionState.active:
- case ConnectionState.done:
- return Column(children: [
- Text(timeFormat.format(snapshot.data), key: Key('time')),
- Text(dateFormat.format(snapshot.data), key: Key('date')),
- ]);
- default:
- return Text('Loading...', key: Key('loading'));
- }
- },
+ return LayoutBuilder(
+ builder: (BuildContext context, BoxConstraints viewportConstraints) {
+ return SingleChildScrollView(
+ child: ConstrainedBox(
+ constraints: BoxConstraints(
+ minHeight: viewportConstraints.maxHeight,
+ ),
+ child: IntrinsicHeight(
+ child: Container(
+ padding: const EdgeInsets.symmetric(vertical: 36.0, horizontal: 16.0),
+ height: viewportConstraints.maxHeight,
+ child: Column(
+ children: [
+ StatusInfoCard(time$, defaultTime: defaultTime),
+ Expanded(child: Text('Content')),
+ ],
+ ),
+ )
+ ),
),
- Expanded(child: Text('Content')),
- ],
- ),
+ );
+ }
);
}
}