Skip to content

Instantly share code, notes, and snippets.

@ybakos
Last active February 14, 2020 20:40
Show Gist options
  • Save ybakos/55cb32becc6c723537155da74de34ba9 to your computer and use it in GitHub Desktop.
Save ybakos/55cb32becc6c723537155da74de34ba9 to your computer and use it in GitHub Desktop.
CS 492 Week 7 Exploration 4 Exercise ListView
import 'package:flutter/material.dart';
void main() => runApp(App());
class App extends StatefulWidget {
@override
State createState() => AppState();
}
class AppState extends State<App> {
final desserts = List<String>.generate(4, (i) {
return 'Dessert Name $i';
});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(
title: Text('${desserts.length} Desserts')
),
body: DessertsScreen(desserts: desserts),
floatingActionButton: FloatingActionButton(
onPressed: () {
addDessert('New Cake! ${desserts.length}');
},
child: Icon(Icons.cake)
)
)
);
}
void addDessert(String name) {
// TODO: Add `name` to the list.
// Don't forget to ... hmmm...
}
}
class DessertsScreen extends StatefulWidget {
final List<String> desserts;
DessertsScreen({this.desserts});
@override
DessertsScreenState createState() =>
DessertsScreenState(desserts: desserts);
}
class DessertsScreenState extends State<DessertsScreen> {
final List<String> desserts;
DessertsScreenState({this.desserts});
@override
Widget build(BuildContext context) {
// TODO: Use the builder constructor.
// Pass it two arguments.
return ListView(
children: desserts.map( (name) {
return ListTile(
leading: FlutterLogo(),
trailing: Icon(Icons.cake),
title: Text(name),
subtitle: Text('Mmmm delicious!')
);
}).toList()
);
}
}
import 'package:flutter/material.dart';
void main() => runApp(App());
class App extends StatefulWidget {
@override
State createState() => AppState();
}
class AppState extends State<App> {
final desserts = List<String>.generate(4, (i) {
return 'Dessert Name $i';
});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(
title: Text('${desserts.length} Desserts')
),
body: DessertsScreen(desserts: desserts),
floatingActionButton: FloatingActionButton(
onPressed: () {
addDessert('New Cake! ${desserts.length}');
},
child: Icon(Icons.cake)
)
)
);
}
void addDessert(String name) {
// DONE
setState( () {
desserts.add(name);
});
}
}
class DessertsScreen extends StatefulWidget {
final List<String> desserts;
DessertsScreen({this.desserts});
@override
DessertsScreenState createState() =>
DessertsScreenState(desserts: desserts);
}
class DessertsScreenState extends State<DessertsScreen> {
final List<String> desserts;
DessertsScreenState({this.desserts});
@override
Widget build(BuildContext context) {
// DONE
return ListView.builder(
itemCount: desserts.length,
itemBuilder: (context, index) {
return ListTile(
leading: FlutterLogo(),
trailing: Icon(Icons.cake),
title: Text(desserts[index]),
subtitle: Text('Mmmm delicious!')
);
}
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment