Skip to content

Instantly share code, notes, and snippets.

@lukaszciastko
Created June 2, 2019 20:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lukaszciastko/02a9cd326f3832f2d5d4ad9d33540ea4 to your computer and use it in GitHub Desktop.
Save lukaszciastko/02a9cd326f3832f2d5d4ad9d33540ea4 to your computer and use it in GitHub Desktop.
import 'package:flutter/material.dart';
import 'package:view_model/view_model.dart';
import 'package:view_model_tasks/task.dart';
import 'package:view_model_tasks/task_list_view_model.dart';
class TaskListPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ViewModelBuilder<TaskListViewModel>(
viewModel: () => TaskListViewModel(),
builder: (BuildContext context, TaskListViewModel viewModel) {
return Scaffold(
appBar: AppBar(
title: const Text('Task List'),
),
body: _buildBody(viewModel),
);
},
);
}
Widget _buildBody(TaskListViewModel viewModel) {
return StatefulBuilder(
builder: (BuildContext context, StateSetter setState) {
return ListView.builder(
padding: const EdgeInsets.symmetric(vertical: 8),
itemCount: viewModel.tasks.length,
itemBuilder: (BuildContext context, int index) {
final Task task = viewModel.tasks[index];
return ListTile(
title: Text(task.name),
leading: Checkbox(
value: task.isComplete,
onChanged: (bool value) {
setState(() {
viewModel.tasks[index] = task.copyWith(isComplete: value);
});
},
),
);
},
);
},
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment