Skip to content

Instantly share code, notes, and snippets.

@OculusMode
Created May 19, 2018 07:44
Show Gist options
  • Save OculusMode/213052325ec725aad3ab92c73599b187 to your computer and use it in GitHub Desktop.
Save OculusMode/213052325ec725aad3ab92c73599b187 to your computer and use it in GitHub Desktop.
import 'package:flutter/material.dart';
import 'package:meta/meta.dart';
class NewTodoList extends StatefulWidget {
NewTodoListState createState() => new NewTodoListState();
}
class NewTodoListState extends State<NewTodoList> {
List _list = new List();
TextEditingController _addedController = new TextEditingController();
Widget addedTile(){
return new Row(
children: <Widget>[
new Expanded(child: new TextField(controller: _addedController,),),
new IconButton(icon: new Icon(Icons.add), onPressed: () => add())
],
);
}
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'NewTodoList',
home: new Scaffold(
appBar: new AppBar(
title: new Text('New todoList'),
),
body: new Column(
children: <Widget>[
addedTile(),
new ListView.builder(
itemCount: _list.length,
shrinkWrap: true,
itemBuilder: (context, int index){
return TodoTile(
_list[index],
index,
onDelete: this._delete,
);
}
)
],
),
),
);
}
void _delete(int index) {
print('called delete');
print(index);
setState(() {
_list.removeAt(index);
});
print(_list);
}
add() {
setState(() {
_list.add(_addedController.text);
});
print(_list);
}
}
class TodoTile extends StatefulWidget {
String _data;
int _index;
final ValueChanged<int> onDelete;
TodoTile(String data, int index ,{ @required this.onDelete }){
_data = data;
_index = index;
}
TodoTileState createState() => new TodoTileState(_data, _index);
}
class TodoTileState extends State<TodoTile>{
String _data;
int _index;
bool _writable = false;
TextEditingController _controller;
TodoTileState(String data, int index){
_data = data;
_controller = new TextEditingController(text: _data);
_index = index;
// _data = widget._data;
// _controller = new TextEditingController(text: _data);
}
void del(){
widget.onDelete(_index);
}
@override
Widget build(BuildContext context) {
return ( !_writable ) ?
new Row(children: <Widget>[
new Expanded(child: new Text(_controller.text)),
new IconButton(icon: new Icon(Icons.edit), onPressed: (){setState(() {
_writable = true;
});}),
new IconButton(icon: new Icon(Icons.delete), onPressed: (){
del();
}),
])
:
new Row(children: <Widget>[
new Expanded(child: new TextField(controller: _controller,)),
// new IconButton(icon: new Icon(Icons.edit), onPressed: null),
new IconButton(icon: new Icon(Icons.done), onPressed: (){
setState(() {
_writable = false;
});
}),
]);
}
}
@behzad-robot
Copy link

class TodoTile extends StatelessWidget{
  String _data;
  int _index;
  final ValueChanged<int> onDelete;
  TodoTile(String data, int index ,{ @required this.onDelete }){
    _data = data;
    _index = index;
  }

  @override
  Widget build(BuildContext context) {
   /* return new Row(children: <Widget>[
      new IconButton(icon: new Icon(Icons.edit), onPressed: null),
      new IconButton(icon: new Icon(Icons.delete), onPressed:(){}),
    ]);*/
   return RaisedButton(child:new Text(_data),onPressed: (){
     this.onDelete(_index);
   },);
  }

}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment