Skip to content

Instantly share code, notes, and snippets.

@r3dm1ke
Created December 5, 2019 17:42
Show Gist options
  • Select an option

  • Save r3dm1ke/8cc74a5c1d992019f6fb7a8a28605b6f to your computer and use it in GitHub Desktop.

Select an option

Save r3dm1ke/8cc74a5c1d992019f6fb7a8a28605b6f to your computer and use it in GitHub Desktop.
Splitting views in Flutter
import 'package:flutter/material.dart';
import 'package:todo_app/task.dart';
class TODOList extends StatelessWidget {
final List<Task> tasks;
final onToggle;
TODOList({@required this.tasks, @required this.onToggle});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('TODO app'),
),
body: ListView.builder(
itemCount: tasks.length,
itemBuilder: (context, index) {
return CheckboxListTile(
title: Text(tasks[index].getName()),
value: tasks[index].isCompleted(),
onChanged: (_) => onToggle(tasks[index]),
);
}),
floatingActionButton: FloatingActionButton(
onPressed: () => Navigator.pushNamed(context, '/create'),
child: Icon(Icons.add)
),
);
}
}
import 'package:flutter/material.dart';
import 'package:todo_app/task.dart';
class TODOList extends StatelessWidget {
final List<Task> tasks;
final onToggle;
TODOList({@required this.tasks, @required this.onToggle});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('TODO app'),
),
body: ListView.builder(
itemCount: tasks.length,
itemBuilder: (context, index) {
return CheckboxListTile(
title: Text(tasks[index].getName()),
value: tasks[index].isCompleted(),
onChanged: (_) => onToggle(tasks[index]),
);
}),
floatingActionButton: FloatingActionButton(
onPressed: () => Navigator.pushNamed(context, '/create'),
child: Icon(Icons.add)
),
);
}
}
import 'package:flutter/material.dart';
import 'package:todo_app/task.dart';
import 'package:todo_app/create.dart';
import 'package:todo_app/list.dart';
void main() => runApp(TODOApp());
class TODOApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return TODO();
}
}
class TODO extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return TODOState();
}
}
class TODOState extends State<TODO> {
final List<Task> tasks = [];
void onTaskCreated(String name) {
setState(() {
tasks.add(Task(name));
});
}
void onTaskToggled(Task task) {
setState(() {
task.setCompleted(!task.isCompleted());
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'TODO app',
initialRoute: '/',
routes: {
'/': (context) => TODOList(tasks: tasks, onToggle: onTaskToggled),
'/create': (context) => TODOCreate(onCreate: onTaskCreated,),
},
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment