Skip to content

Instantly share code, notes, and snippets.

@wilburx9
Created April 2, 2018 13:11
Show Gist options
  • Select an option

  • Save wilburx9/ebc6133b98ffaa70a7520f2ca8490ff9 to your computer and use it in GitHub Desktop.

Select an option

Save wilburx9/ebc6133b98ffaa70a7520f2ca8490ff9 to your computer and use it in GitHub Desktop.

Revisions

  1. @Wilburt Wilburt created this gist Apr 2, 2018.
    120 changes: 120 additions & 0 deletions post_details.dart
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,120 @@
    import 'package:flutter/material.dart';
    import 'package:intl/intl.dart';
    import 'package:news_aggreator/home_page.dart';

    class PostDetails extends StatefulWidget {
    PostDetails(this.post);
    final Post post;

    @override
    State<StatefulWidget> createState() => new _PostDetailsState(post);
    }

    class _PostDetailsState extends State<PostDetails> {
    final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
    final Post post;

    _PostDetailsState(this.post);

    @override
    Widget build(BuildContext context) => new Scaffold(
    appBar: new AppBar(
    title: new Text(
    post.title,
    style: new TextStyle(fontSize: 16.0),
    overflow: TextOverflow.fade,
    ),
    actions: <Widget>[
    new IconButton(
    icon: new Icon(
    Icons.share,
    color: Colors.white,
    ),
    onPressed: () {
    _scaffoldKey.currentState.showSnackBar(const SnackBar(
    content: const Text('Implement a sharing function')));
    }),
    ],
    ),
    body: new Scaffold(
    key: _scaffoldKey,
    body: _postCardView(),
    ),
    );

    Widget _postCardView() {
    return new Container(
    margin: new EdgeInsets.all(10.0),
    child: new Column(
    children: <Widget>[
    new Text(
    post.title,
    textAlign: TextAlign.center,
    style: new TextStyle(
    color: Colors.black,
    fontSize: 20.0,
    fontWeight: FontWeight.bold),
    ),
    new Padding(
    padding: new EdgeInsets.symmetric(vertical: 10.0),
    child: new Divider(
    height: 1.0,
    color: Colors.black,
    ),
    ),
    new Row(
    mainAxisAlignment: MainAxisAlignment.center,
    children: <Widget>[
    new Icon(
    Icons.access_time,
    color: Colors.grey,
    ),
    new Padding(
    padding: new EdgeInsets.symmetric(horizontal: 10.0),
    child: new Text(getFormattedTime()),
    )
    ],
    ),
    new Container(
    width: double.infinity,
    height: 150.0,
    margin: new EdgeInsets.all(10.0),
    child: new Image.network(
    post.thumbUrl,
    fit: BoxFit.cover,
    ),
    ),
    new Text(
    post.summary,
    style: new TextStyle(
    fontSize: 16.0,
    ),
    ),
    new Container(
    margin: new EdgeInsets.only(top: 20.0),
    child: new RaisedButton(
    onPressed: _launchUrl,
    child: new Text(
    "READ MORE",
    style: new TextStyle(color: Colors.white),
    ),
    color: Theme.of(context).accentColor,
    splashColor: Colors.deepOrangeAccent,
    ),
    )
    ],
    ),
    );
    }

    String getFormattedTime() {
    var timeStamp = new DateTime.fromMillisecondsSinceEpoch(post.timeStamp);
    var formatter = new DateFormat('dd MMM, yyyy. HH:mm');
    return formatter.format(timeStamp);
    }

    void _launchUrl() async {
    String url = post.url;
    // Launch the url
    }
    }