diff --git a/lib/ui/entries/add_emojis.dart b/lib/ui/entries/add_emojis.dart index 7de1eb79f58975657a06ed23193afb87d3f5484e..6b6d8199f31f67f85ec3a1a690fae27411a5de11 100644 --- a/lib/ui/entries/add_emojis.dart +++ b/lib/ui/entries/add_emojis.dart @@ -2,6 +2,8 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter_app/db/database_helper.dart'; + + class AddEmojis extends StatefulWidget { @override _AddEmojisState createState() => _AddEmojisState(); diff --git a/lib/ui/entries/add_entries.dart b/lib/ui/entries/add_entries.dart index 37d3aa4a4b9a37b19a98b0a0c185241b98c6bdcd..3f9966980e3ee1064241e5bdafabee4a4d071c6d 100644 --- a/lib/ui/entries/add_entries.dart +++ b/lib/ui/entries/add_entries.dart @@ -37,7 +37,7 @@ class _AddEntryState extends State<AddEntry> { String content = _contentController.text; Map<String, String> diary = { 'title' : title, - 'content' : content + 'content' : content, }; _ref.push().set(diary).then((value) { Navigator.of(context).pop(); diff --git a/lib/ui/entries/emoji_entries.dart b/lib/ui/entries/emoji_entries.dart new file mode 100644 index 0000000000000000000000000000000000000000..477ec3e8cf3853b52901ba517c3be71ce712b496 --- /dev/null +++ b/lib/ui/entries/emoji_entries.dart @@ -0,0 +1,102 @@ +import 'package:firebase_database/firebase_database.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +class Emojis extends StatefulWidget { + + + + + @override + _EmojisState createState() => _EmojisState(); +} + +class _EmojisState extends State<Emojis> { + String _typeSelected =''; + + @override + Widget _buildContactType(String title){ + + return InkWell( + + child: Container( + height: 40, + width: 90, + + decoration: BoxDecoration( + color: _typeSelected == title? Colors.green : Theme.of(context).accentColor, + borderRadius: BorderRadius.circular(15), + ), + + child: Center(child: Text(title, style: TextStyle(fontSize: 18, + color: Colors.white), + ),),), + + onTap: (){ + setState(() { + _typeSelected = title; + }); + }, + ); + } + + + + @override + Widget build(BuildContext context) { + return Scaffold( + body: SafeArea( + child: SingleChildScrollView( + child: Stack( + children: <Widget>[ + Row( + children: [ + InkResponse( + onTap: () { + Navigator.of(context).pop(); + }, + child: Container( + padding: EdgeInsets.all(10), + decoration: BoxDecoration( + color: Colors.white, + border: Border.all(color: Colors.black12), + borderRadius: BorderRadius.circular(100), + boxShadow: [ + BoxShadow( + color: Color(0xFF3C4858).withOpacity(.5), + offset: Offset(1.0, 10.0), + blurRadius: 10.0), + ], + ), + child: Icon( + Icons.arrow_downward, + semanticLabel: 'Back', + size: 22, + ), + ), + ), + ], + ), + // SizedBox(height: 15,), + Column( + children: [ + Container( + margin: EdgeInsets.all(15), + height: 40, + child: ListView( + scrollDirection: Axis.horizontal, + children: [ + _buildContactType('Angry'), + SizedBox(width: 20,), + ], + ), + ), + ], + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/ui/entries/list_entries.dart b/lib/ui/entries/list_entries.dart new file mode 100644 index 0000000000000000000000000000000000000000..6902ef08595da93559c64d010f074aa5718f2cc2 --- /dev/null +++ b/lib/ui/entries/list_entries.dart @@ -0,0 +1,299 @@ +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:firebase_database/ui/firebase_animated_list.dart'; +import 'package:flutter/material.dart'; +import 'package:firebase_core/firebase_core.dart'; +import 'package:firebase_database/firebase_database.dart'; +import 'package:flutter_app/ui/common/slide_up_route.dart'; + +import 'add_entries.dart'; + + +class ListEntries extends StatefulWidget { + @override + _ListEntriesState createState() => _ListEntriesState(); +} + +class _ListEntriesState extends State<ListEntries> { + Query _ref; + DatabaseReference reference = + FirebaseDatabase.instance.reference().child('diary'); + @override + void initState() { + // TODO: implement initState + super.initState(); + _ref = FirebaseDatabase.instance + .reference() + .child('diary'); + } + @override + Widget _buildDiaryEntry({Map diary}){ + return GestureDetector( + onTap: () => Navigator.of(context).push(SlideUpRoute(widget: AddEntry())), + child: Container( + margin: EdgeInsets.only(bottom: 15.0, top: 15.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: <Widget>[ + LimitedBox( + maxWidth: MediaQuery.of(context).size.width * .9, + maxHeight: 280, + child: Stack( + children: <Widget>[ + Container( + // imageUrl: 'https://images.unsplash.com/photo-1517423440428-a5a00ad493e8', + width: 200, + height: 250, + margin: EdgeInsets.only(left: 100), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + image: DecorationImage( + colorFilter: ColorFilter.mode(Color(0xFF3C4858), BlendMode.lighten), + image: CachedNetworkImageProvider( + "https://images.unsplash.com/photo-1517423440428-a5a00ad493e8" + ), + fit: BoxFit.cover, + ), + boxShadow: [ + BoxShadow( + color: Color(0xFF3C4858).withOpacity(.4), + offset: Offset(5.0, 5.0), + blurRadius: 10.0), + ], + ), + ), + Positioned( + left: 0.0, + top: 30.0, + //the center = (height of image container/2) - (height of this container/2) + child: Container( + width: 180, + height: 190, + alignment: Alignment.center, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(10.0), + boxShadow: [ + BoxShadow( + color: Colors.black12, + offset: Offset(0.0, 0.0), + blurRadius: 10.0), + ]), + child: Padding( + padding: const EdgeInsets.all(10.0), + child: Column( + children: <Widget>[ + Text( + diary['title'], + maxLines: 3, + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: Colors.black54, + fontWeight: FontWeight.bold, + fontSize: 20.0), + ), + Expanded( + child: Column( + mainAxisAlignment: + MainAxisAlignment.end, + children: <Widget>[ + Row( + children: <Widget>[ + Icon( + Icons.event_note, + size: 18.0, + color: Color(0xFF3C4858), + ), + Padding( + padding: + const EdgeInsets.all(8.0), + child: Text('Date'), + ), + ], + ), + Row( + mainAxisAlignment: + MainAxisAlignment.end, + children: <Widget>[ + Icon( + Icons.arrow_forward, + size: 26.0, + color: Colors.blueGrey, + ) + ], + ), + ], + ), + ) + ], + ), + ), + ), + ), + ], + ), + ), + ], + ), + ), + ); + } + + + @override + Widget build(BuildContext context) { + return Scaffold( + body: SafeArea( + child: FirebaseAnimatedList(query: _ref, + itemBuilder: (BuildContext context, DataSnapshot snapshot, + Animation<double> animation, int index) { + Map diary = snapshot.value; + diary['key'] = snapshot.key; + return _buildDiaryEntry(diary: diary); + }, + ), + ), + ); + // Consumer<EntryViewModel>(builder: (context, model, child) { + // List<Entry> entries = model.entries; + // if (model.viewStatus == ViewStatus.Loading) return LoadingView(); + // if (entries.length < 1) return EmptyView(); + // return ListView.builder( + // itemCount: entries.length, + // itemBuilder: (BuildContext context, int index) { + // final Entry entry = entries[index]; + // final String heroTag = 'diary-image-${entry.id}'; + // + // return GestureDetector( + // onTap: () => Navigator.of(context) + // .pushNamed(ViewEntry.routeName, arguments: entry), + // child: Container( + // margin: EdgeInsets.only(bottom: 15.0, top: 15.0), + // child: Row( + // mainAxisAlignment: MainAxisAlignment.center, + // children: <Widget>[ + // LimitedBox( + // maxWidth: MediaQuery.of(context).size.width * .9, + // maxHeight: 280, + // child: Stack( + // children: <Widget>[ + // CachedNetworkImage( + // imageUrl: entry.imageUrl, + // imageBuilder: (context, imageProvider) => + // EntryImage( + // heroTag: heroTag, + // imageProvider: imageProvider, + // ), + // placeholder: (context, url) => EntryImage( + // heroTag: heroTag, + // imageProvider: + // AssetImage('images/entry_placeholder_image.jpg'), + // ), + // errorWidget: (context, url, error) => EntryImage( + // heroTag: heroTag, + // imageProvider: + // AssetImage('images/entry_placeholder_image.jpg'), + // ), + // ), + // Positioned( + // left: 0.0, + // top: 30.0, + // //the center = (height of image container/2) - (height of this container/2) + // child: Container( + // width: 180, + // height: 190, + // alignment: Alignment.center, + // decoration: BoxDecoration( + // color: Colors.white, + // borderRadius: BorderRadius.circular(10.0), + // boxShadow: [ + // BoxShadow( + // color: Colors.black12, + // offset: Offset(0.0, 0.0), + // blurRadius: 10.0), + // ]), + // child: Padding( + // padding: const EdgeInsets.all(10.0), + // child: Column( + // children: <Widget>[ + // Text( + // entry.title, + // maxLines: 3, + // overflow: TextOverflow.ellipsis, + // style: TextStyle( + // color: Colors.black54, + // fontWeight: FontWeight.bold, + // fontSize: 20.0), + // ), + // Expanded( + // child: Column( + // mainAxisAlignment: + // MainAxisAlignment.end, + // children: <Widget>[ + // Row( + // children: <Widget>[ + // Icon( + // Icons.event_note, + // size: 18.0, + // color: Color(0xFF3C4858), + // ), + // Padding( + // padding: + // const EdgeInsets.all(8.0), + // child: Text(entry.createdAt), + // ), + // ], + // ), + // Row( + // mainAxisAlignment: + // MainAxisAlignment.end, + // children: <Widget>[ + // Icon( + // Icons.arrow_forward, + // size: 26.0, + // color: Colors.blueGrey, + // ) + // ], + // ), + // ], + // ), + // ) + // ], + // ), + // ), + // ), + // ), + // ], + // ), + // ), + // ], + // ), + // ), + // ); + // }); + // }), + // ); + } +} +// class EmptyView extends StatelessWidget { +// @override +// Widget build(BuildContext context) { +// return Column( +// mainAxisAlignment: MainAxisAlignment.center, +// crossAxisAlignment: CrossAxisAlignment.center, +// children: <Widget>[ +// Container( +// alignment: Alignment.center, +// margin: EdgeInsets.only(bottom: 15.0), +// child: Text( +// 'No entries yet', +// style: TextStyle(fontSize: 20.0), +// ), +// ), +// Container( +// alignment: Alignment.center, +// child: Text('Click the + button to start writing'), +// ) +// ], +// ); +// } +// } \ No newline at end of file diff --git a/lib/ui/entries/select_page.dart b/lib/ui/entries/select_page.dart index aa29d679faba8b857c1224ec47e07d38d5b0a37d..a25283273adc8eec8a273dd266d448a3a76fc1b9 100644 --- a/lib/ui/entries/select_page.dart +++ b/lib/ui/entries/select_page.dart @@ -1,11 +1,13 @@ // import 'dart:typed_data'; import 'package:flutter_app/ui/entries/add_entries.dart'; +import 'package:flutter_app/ui/entries/emoji_entries.dart'; import 'package:flutter_app/ui/entries/image_uploader.dart'; import 'package:flutter/material.dart'; import 'package:flutter_app/ui/common/slide_up_route.dart'; // import 'package:flutter_app/ui/entries/add_entries.dart'; import 'add_emojis.dart'; import 'package:flutter_app/ui/entries/range_slider.dart'; +import 'list_entries.dart'; import 'sensor_input.dart'; class Selectentries extends StatefulWidget { @@ -52,7 +54,7 @@ class _SelectentriesState extends State<Selectentries> { Column( children: <Widget>[ GestureDetector( - onTap: () => Navigator.of(context).push(SlideUpRoute(widget: AddEntry())), + onTap: () => Navigator.of(context).push(SlideUpRoute(widget: ListEntries())), child: Container( margin: EdgeInsets.only(bottom: 10.0, top: 10.0), child: Row( @@ -156,7 +158,7 @@ class _SelectentriesState extends State<Selectentries> { // ), // ), GestureDetector( - onTap: () =>Navigator.of(context).push(SlideUpRoute(widget: AddEmojis())), + onTap: () =>Navigator.of(context).push(SlideUpRoute(widget: Emojis())), child: Container( margin: EdgeInsets.only(bottom: 10.0, top: 10.0), child: Row( diff --git a/lib/ui/wrapper/wrapper.dart b/lib/ui/wrapper/wrapper.dart index a47f241e324bbcaa46d5a957545ed1296a1dc307..53c2642f1e288bae087a7182e0af589043eb1f8c 100644 --- a/lib/ui/wrapper/wrapper.dart +++ b/lib/ui/wrapper/wrapper.dart @@ -1 +1,235 @@ import 'package:flutter/material.dart'; + + + +import 'package:flutter/material.dart'; +// import 'package:provider/provider.dart'; +// import 'package:flutter_app/view_model/entry.dart'; +// import 'package:flutter_app/models/entries.dart'; +// import 'package:flutter_app/view_model/base.dart'; +// import 'view_entry.dart'; +// import 'package:cached_network_image/cached_network_image.dart'; +// +// class ListEntries extends StatefulWidget { +// @override +// _ListEntriesState createState() => _ListEntriesState(); +// } +// +// class _ListEntriesState extends State<ListEntries> { +// EntryViewModel entryViewModel; +// +// @override +// void didChangeDependencies() { +// super.didChangeDependencies(); +// final entryViewModel = Provider.of<EntryViewModel>(context); +// if (this.entryViewModel != entryViewModel) { +// this.entryViewModel = entryViewModel; +// Future.microtask(entryViewModel.getEntries); +// } +// } +// +// @override +// Widget build(BuildContext context) { +// return SafeArea( +// child: Consumer<EntryViewModel>(builder: (context, model, child) { +// List<Entry> entries = model.entries; +// if (model.viewStatus == ViewStatus.Loading) return LoadingView(); +// if (entries.length < 1) return EmptyView(); +// return ListView.builder( +// itemCount: entries.length, +// itemBuilder: (BuildContext context, int index) { +// final Entry entry = entries[index]; +// final String heroTag = 'diary-image-${entry.id}'; +// +// return GestureDetector( +// onTap: () => Navigator.of(context) +// .pushNamed(ViewEntry.routeName, arguments: entry), +// child: Container( +// margin: EdgeInsets.only(bottom: 15.0, top: 15.0), +// child: Row( +// mainAxisAlignment: MainAxisAlignment.center, +// children: <Widget>[ +// LimitedBox( +// maxWidth: MediaQuery.of(context).size.width * .9, +// maxHeight: 280, +// child: Stack( +// children: <Widget>[ +// CachedNetworkImage( +// imageUrl: entry.imageUrl, +// imageBuilder: (context, imageProvider) => +// EntryImage( +// heroTag: heroTag, +// imageProvider: imageProvider, +// ), +// placeholder: (context, url) => EntryImage( +// heroTag: heroTag, +// imageProvider: +// AssetImage('images/entry_placeholder_image.jpg'), +// ), +// errorWidget: (context, url, error) => EntryImage( +// heroTag: heroTag, +// imageProvider: +// AssetImage('images/entry_placeholder_image.jpg'), +// ), +// ), +// Positioned( +// left: 0.0, +// top: 30.0, +// //the center = (height of image container/2) - (height of this container/2) +// child: Container( +// width: 180, +// height: 190, +// alignment: Alignment.center, +// decoration: BoxDecoration( +// color: Colors.white, +// borderRadius: BorderRadius.circular(10.0), +// boxShadow: [ +// BoxShadow( +// color: Colors.black12, +// offset: Offset(0.0, 0.0), +// blurRadius: 10.0), +// ]), +// child: Padding( +// padding: const EdgeInsets.all(10.0), +// child: Column( +// children: <Widget>[ +// Text( +// entry.title, +// maxLines: 3, +// overflow: TextOverflow.ellipsis, +// style: TextStyle( +// color: Colors.black54, +// fontWeight: FontWeight.bold, +// fontSize: 20.0), +// ), +// Expanded( +// child: Column( +// mainAxisAlignment: +// MainAxisAlignment.end, +// children: <Widget>[ +// Row( +// children: <Widget>[ +// Icon( +// Icons.event_note, +// size: 18.0, +// color: Color(0xFF3C4858), +// ), +// Padding( +// padding: +// const EdgeInsets.all(8.0), +// child: Text(entry.createdAt), +// ), +// ], +// ), +// Row( +// mainAxisAlignment: +// MainAxisAlignment.end, +// children: <Widget>[ +// Icon( +// Icons.arrow_forward, +// size: 26.0, +// color: Colors.blueGrey, +// ) +// ], +// ), +// ], +// ), +// ) +// ], +// ), +// ), +// ), +// ), +// ], +// ), +// ), +// ], +// ), +// ), +// ); +// }); +// }), +// ); +// } +// } +// +// class EntryImage extends StatelessWidget { +// final String heroTag; +// final ImageProvider imageProvider; +// +// const EntryImage({ +// Key key, +// this.heroTag, +// this.imageProvider, +// }) : super(key: key); +// +// @override +// Widget build(BuildContext context) { +// return Hero( +// tag: imageProvider, +// child: Container( +// width: 200, +// height: 250, +// margin: EdgeInsets.only(left: 100), +// decoration: BoxDecoration( +// borderRadius: BorderRadius.circular(10), +// image: DecorationImage( +// colorFilter: +// ColorFilter.mode(Color(0xFF3C4858), BlendMode.lighten), +// image: imageProvider, +// fit: BoxFit.cover), +// boxShadow: [ +// BoxShadow( +// color: Color(0xFF3C4858).withOpacity(.4), +// offset: Offset(5.0, 5.0), +// blurRadius: 10.0), +// ], +// ), +// ), +// ); +// } +// } +// +// class EmptyView extends StatelessWidget { +// @override +// Widget build(BuildContext context) { +// return Column( +// mainAxisAlignment: MainAxisAlignment.center, +// crossAxisAlignment: CrossAxisAlignment.center, +// children: <Widget>[ +// Container( +// alignment: Alignment.center, +// margin: EdgeInsets.only(bottom: 15.0), +// child: Text( +// 'No entries yet', +// style: TextStyle(fontSize: 20.0), +// ), +// ), +// Container( +// alignment: Alignment.center, +// child: Text('Click the + button to start writing'), +// ) +// ], +// ); +// } +// } +// +// class LoadingView extends StatelessWidget { +// @override +// Widget build(BuildContext context) { +// return Column( +// mainAxisAlignment: MainAxisAlignment.center, +// crossAxisAlignment: CrossAxisAlignment.center, +// children: <Widget>[ +// Container( +// alignment: Alignment.center, +// margin: EdgeInsets.only(bottom: 20), +// child: CircularProgressIndicator( +// valueColor: AlwaysStoppedAnimation(Color(0xFF3C4858)), +// ), +// ), +// Text('Fetching your entries '), +// ], +// ); +// } +// } diff --git a/pubspec.lock b/pubspec.lock index 071c2e595be10a26cbf22d79d5ed7b758980c685..cca07d18f5bb6644fef9e4385371d22458e1134b 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -23,7 +23,7 @@ packages: source: hosted version: "2.1.0" cached_network_image: - dependency: "direct dev" + dependency: "direct main" description: name: cached_network_image url: "https://pub.dartlang.org"