Created
May 19, 2018 07:44
-
-
Save OculusMode/213052325ec725aad3ab92c73599b187 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
commented
May 19, 2018
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment