From b4110ca4387556cbde5d1855bf375fbf8b65e833 Mon Sep 17 00:00:00 2001 From: Nishant Srivastava Date: Sat, 20 Jan 2018 03:23:01 +0530 Subject: [PATCH] updated: using_listview example with working implementation --- using_listview/lib/contact_page.dart | 33 +++++++++++++++++++ .../lib/contactlist/contact_list.dart | 23 +++++++++++++ .../lib/contactlist/contact_list_item.dart | 16 +++++++++ .../lib/contactlist/modal/contact.dart | 6 ++++ using_listview/lib/main.dart | 20 ++++------- 5 files changed, 85 insertions(+), 13 deletions(-) create mode 100644 using_listview/lib/contact_page.dart create mode 100644 using_listview/lib/contactlist/contact_list.dart create mode 100644 using_listview/lib/contactlist/contact_list_item.dart create mode 100644 using_listview/lib/contactlist/modal/contact.dart diff --git a/using_listview/lib/contact_page.dart b/using_listview/lib/contact_page.dart new file mode 100644 index 0000000..1446a9a --- /dev/null +++ b/using_listview/lib/contact_page.dart @@ -0,0 +1,33 @@ +import 'package:flutter/material.dart'; +import 'package:using_listview/contactlist/contact_list.dart'; +import 'package:using_listview/contactlist/modal/contact.dart'; + +class ContactPage extends StatelessWidget { + _buildContactList() { + return [ + const ContactModal( + fullName: 'Romain Hoogmoed', email: 'romain.hoogmoed@example.com'), + const ContactModal( + fullName: 'Emilie Olsen', email: 'emilie.olsen@example.com'), + const ContactModal( + fullName: 'Nishant Srivastava', email: 'nishant.srivastava@example.com'), + const ContactModal( + fullName: 'Romain Hoogmoed', email: 'romain.hoogmoed@example.com'), + const ContactModal( + fullName: 'Emilie Olsen', email: 'emilie.olsen@example.com'), + const ContactModal( + fullName: 'Nishant Srivastava', email: 'nishant.srivastava@example.com'), + const ContactModal( + fullName: 'Romain Hoogmoed', email: 'romain.hoogmoed@example.com'), + const ContactModal( + fullName: 'Emilie Olsen', email: 'emilie.olsen@example.com'), + const ContactModal( + fullName: 'Nishant Srivastava', email: 'nishant.srivastava@example.com'), + ]; + } + + @override + Widget build(BuildContext context) { + return new Scaffold(body: new ContactsList(_buildContactList())); + } +} diff --git a/using_listview/lib/contactlist/contact_list.dart b/using_listview/lib/contactlist/contact_list.dart new file mode 100644 index 0000000..cf9c538 --- /dev/null +++ b/using_listview/lib/contactlist/contact_list.dart @@ -0,0 +1,23 @@ +import 'package:flutter/material.dart'; +import 'package:using_listview/contactlist/contact_list_item.dart'; +import 'package:using_listview/contactlist/modal/contact.dart'; + +class ContactsList extends StatelessWidget { + final List _contactModal; + + ContactsList(this._contactModal); + + @override + Widget build(BuildContext context) { + return new ListView( + padding: new EdgeInsets.symmetric(vertical: 8.0), + children: _buildContactsList(), + ); + } + + List _buildContactsList() { + return _contactModal + .map((contact) => new ContactListItem(contact)) + .toList(); + } +} diff --git a/using_listview/lib/contactlist/contact_list_item.dart b/using_listview/lib/contactlist/contact_list_item.dart new file mode 100644 index 0000000..6d10066 --- /dev/null +++ b/using_listview/lib/contactlist/contact_list_item.dart @@ -0,0 +1,16 @@ +import 'package:flutter/material.dart'; +import 'package:using_listview/contactlist/modal/contact.dart'; + +class ContactListItem extends StatelessWidget { + final ContactModal _contactModal; + + ContactListItem(this._contactModal); + + @override + Widget build(BuildContext context) { + return new ListTile( + leading: new CircleAvatar(child: new Text(_contactModal.fullName[0])), + title: new Text(_contactModal.fullName), + subtitle: new Text(_contactModal.email)); + } +} diff --git a/using_listview/lib/contactlist/modal/contact.dart b/using_listview/lib/contactlist/modal/contact.dart new file mode 100644 index 0000000..51dd40a --- /dev/null +++ b/using_listview/lib/contactlist/modal/contact.dart @@ -0,0 +1,6 @@ +class ContactModal { + final String fullName; + final String email; + + const ContactModal({this.fullName, this.email}); +} diff --git a/using_listview/lib/main.dart b/using_listview/lib/main.dart index 2ec07aa..08870c8 100644 --- a/using_listview/lib/main.dart +++ b/using_listview/lib/main.dart @@ -1,19 +1,13 @@ import 'package:flutter/material.dart'; +import 'package:using_listview/contact_page.dart'; -void main() => runApp(new MyApp()); - -class MyApp extends StatelessWidget { - // This widget is the root of your application. - @override - Widget build(BuildContext context) { - return new MaterialApp( - home: new Scaffold( +void main() { + runApp(new MaterialApp( + home: new Scaffold( appBar: new AppBar( title: new Text("Using Listview"), ), - body: new Center( - child: new Text("Hello World!"), - ), - )); - } + body: new ContactPage(), + ), + )); }