Skip to content

Instantly share code, notes, and snippets.

@nitinmehtaa
Created April 28, 2019 19:31
Show Gist options
  • Save nitinmehtaa/7c8d44b1a3cf93dafe6b1ec36f129a68 to your computer and use it in GitHub Desktop.
Save nitinmehtaa/7c8d44b1a3cf93dafe6b1ec36f129a68 to your computer and use it in GitHub Desktop.
ListView with edit dialog in flutter
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
void main() {
runApp(MyApp(
items: List<String>.generate(100, (i) => "List item $i"),
));
}
Future<String> _asyncInputDialog(BuildContext context) async {
String sampleText = '';
return showDialog<String>(
context: context,
barrierDismissible:
false, // dialog is dismissible with a tap on the barrier
builder: (BuildContext context) {
return AlertDialog(
title: Text('Enter Text'),
content: new Row(
children: <Widget>[
new Expanded(
child: new TextField(
autofocus: true,
decoration: new InputDecoration(
labelText: 'Text Here', hintText: 'eg. ABCD'),
onChanged: (value) {
sampleText = value;
},
))
],
),
actions: <Widget>[
FlatButton(
child: Text('Ok'),
onPressed: () {
Navigator.of(context).pop(sampleText);
},
),
],
);
},
);
}
class MyApp extends StatefulWidget {
final List<String> items;
MyApp({Key key, @required this.items}) : super(key: key);
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
final title = 'Long List';
return MaterialApp(
title: title,
home: Scaffold(
appBar: AppBar(
title: Text(title),
),
body: ListView.builder(
itemCount: widget.items.length,
itemBuilder: (context, index) {
return ListTile(
title: Text('${widget.items[index]}'),
trailing: RaisedButton(
child: Text('Edit'),
color: Colors.pinkAccent,
onPressed: () async {
final String newText = await _asyncInputDialog(context);
Scaffold.of(context).showSnackBar(new SnackBar(
content: new Text("$newText"),
));
},
),
);
},
),
),
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment