Last active
November 22, 2019 10:06
-
-
Save vivchar/20f1195e6642246a30ff7c8238adea37 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'; | |
void main() => runApp(MyApp()); | |
class MyApp extends StatelessWidget { | |
@override | |
Widget build(BuildContext context) { | |
return MaterialApp( | |
title: 'TomskSoft', | |
home: HomePage(), | |
); | |
} | |
} | |
class HomePage extends StatefulWidget { | |
@override | |
State<StatefulWidget> createState() { | |
return HomePageState(); | |
} | |
} | |
class HomePageState extends State<HomePage> { | |
final List<String> items = List.generate(4, (i) => "Item ${i + 1}"); | |
@override | |
Widget build(BuildContext context) { | |
return Scaffold( | |
floatingActionButton: FloatingActionButton( | |
child: Icon(Icons.add), | |
onPressed: onAddItem, | |
), | |
appBar: AppBar( | |
title: Text("TomskSoft"), | |
centerTitle: true, | |
leading: Icon(Icons.people), | |
actions: <Widget>[ | |
IconButton( | |
icon: Icon(Icons.settings), | |
onPressed: () {}, | |
) | |
], | |
), | |
body: ListView.builder( | |
itemCount: items.length, | |
itemBuilder: (context, position) { | |
var item = items[position]; | |
return Dismissible( | |
key: Key(item), | |
background: Container(color: Colors.red), | |
onDismissed: (direction) { | |
onRemoveItem(position); | |
}, | |
child: ListTile( | |
title: Text(item), | |
subtitle: Text("subtitle"), | |
trailing: Icon(Icons.keyboard_arrow_right), | |
leading: CircleAvatar(child: Icon(Icons.person)), | |
onTap: () { | |
onEditItem(position); | |
}, | |
), | |
); | |
})); | |
} | |
onAddItem() async { | |
var name = await openSecondPage(""); | |
// var name = await showDialog( | |
// context: context, | |
// builder: (context) { | |
// var controller = TextEditingController(); | |
// return AlertDialog( | |
// title: Text('Please enter a value'), | |
// content: TextField(controller: controller), | |
// actions: <Widget>[ | |
// FlatButton( | |
// child: Text("ADD"), | |
// onPressed: () { | |
// Navigator.of(context).pop(controller.text); | |
// }, | |
// ) | |
// ], | |
// ); | |
// }); | |
// | |
setState(() { | |
items.add(name); | |
}); | |
} | |
Future<String> openSecondPage(String item) async { | |
var name = await Navigator.push( | |
context, | |
MaterialPageRoute(builder: (context) => SecondRoute(item: item)), | |
); | |
return name; | |
} | |
onRemoveItem(int position) { | |
setState(() { | |
items.removeAt(position); | |
}); | |
} | |
void onEditItem(int position) async { | |
var item = items[position]; | |
var newItem = await openSecondPage(item); | |
setState(() { | |
items.removeAt(position); | |
items.insert(position, newItem); | |
}); | |
} | |
} | |
class SecondRoute extends StatefulWidget { | |
final String item; | |
SecondRoute({Key key, @required this.item}) : super(key: key); | |
@override | |
State<StatefulWidget> createState() { | |
return SecondRouteState(); | |
} | |
} | |
class SecondRouteState extends State<SecondRoute> { | |
@override | |
Widget build(BuildContext context) { | |
final controller = TextEditingController(text: "${widget.item}"); | |
return Scaffold( | |
appBar: AppBar( | |
title: Text("Enter a value"), | |
actions: <Widget>[ | |
IconButton( | |
icon: Icon(Icons.done), | |
onPressed: () { | |
Navigator.of(context).pop(controller.text); | |
}, | |
), | |
], | |
), | |
body: Padding( | |
padding: EdgeInsets.all(30), | |
child: Center( | |
child: Column( | |
children: <Widget>[ | |
TextField( | |
decoration: InputDecoration(labelText: "value"), | |
controller: controller, | |
), | |
], | |
), | |
), | |
), | |
); | |
} | |
} |
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
newMaterialApp | |
newText | |
newCenter | |
newWidgetStateless | |
body | |
-> Scaffold | |
-> newCenter | |
appbar -> Appbar | |
-> title newTextTomsksoft | |
-> actions newIconButtonSettings, | |
-> leading Icon | |
body -> newListViewEmpty -> newText -> newListTile | |
-> newListViewDynamic -> newListTile | |
-> newItems | |
-> newItem | |
fab -> newFabParam | |
-> newAddItem -> onPress call | |
-> newWidgetStateful -> setState | |
newRemoveItem | |
-> newDismissible -> onRemoveItem call | |
onAddItem newDialogEmpty | |
-> title: newTextEnterAValue | |
-> content: TextField() | |
-> actions newButtonAdd | |
-> newNavigatorPop | |
-> newTextController | |
-> async await fixes | |
newSecondScreen | |
-> onAddItem newNavigatorPush | |
-> async await fix | |
edit | |
-> create method: newOpenSecondPage | |
-> create method: newEditItem | |
-> newConstructor | |
-> move textController and insert text | |
-> onEditItem: async await and setState remove and insert | |
newTextThanks | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment