我想要一个能够允许用户输入他们的信息并将其显示在对话框内的列表视图中的对话框。
这是我用于列表视图的代码。
new ListView.builder(
itemBuilder: (context, index) {
return _infos.isNotEmpty
? new ListTile(
title: new Text(_infos[index].toMap().toString()),
)
: null;
},
shrinkWrap: true,
)
Run Code Online (Sandbox Code Playgroud)
这是我在文本字段的 onchange 中使用的代码
setState(() {_infos= _result;});
Har*_*iya 19
这是创建默认值的自定义AlertDialog函数textField。
TextEditingController _textFieldController = TextEditingController();
Future<void> _displayTextInputDialog(BuildContext context) async {
return showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text('TextField in Dialog'),
content: TextField(
controller: _textFieldController,
decoration: InputDecoration(hintText: "Text Field in Dialog"),
),
actions: <Widget>[
FlatButton(
child: Text('CANCEL'),
onPressed: () {
Navigator.pop(context);
},
),
FlatButton(
child: Text('OK'),
onPressed: () {
print(_textFieldController.text);
Navigator.pop(context);
},
),
],
);
},
);
}
Run Code Online (Sandbox Code Playgroud)
使用:
_displayTextInputDialog(context);
Run Code Online (Sandbox Code Playgroud)
azi*_*iza 14
这是您所要求的一个快速丑陋的例子,只是传递这个概念:
class DialogExample extends StatefulWidget {
@override
_DialogExampleState createState() => new _DialogExampleState();
}
class _DialogExampleState extends State<DialogExample> {
String _text = "initial";
TextEditingController _c;
@override
initState(){
_c = new TextEditingController();
super.initState();
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Text(_text),
new RaisedButton(onPressed: () {
showDialog(child: new Dialog(
child: new Column(
children: <Widget>[
new TextField(
decoration: new InputDecoration(hintText: "Update Info"),
controller: _c,
),
new FlatButton(
child: new Text("Save"),
onPressed: (){
setState((){
this._text = _c.text;
});
Navigator.pop(context);
},
)
],
),
), context: context);
},child: new Text("Show Dialog"),)
],
)
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
我想你想要这样的东西。
import 'package:flutter/material.dart';
class DialogWithTextField extends StatefulWidget {
@override
_DialogWithTextFieldState createState() => _DialogWithTextFieldState();
}
class _DialogWithTextFieldState extends State<DialogWithTextField> {
_displayDialog() {
return showDialog(
context: context,
builder: (BuildContext context) {
return Dialog(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(50),
),
elevation: 6,
backgroundColor: Colors.transparent,
child: _DialogWithTextField(context),
);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: RaisedButton(
color: Colors.red,
child: Text("Click Here to Open Dialog",
style: TextStyle(
color: Colors.white
),),
onPressed: _displayDialog,
),
),
);
}
}
Widget _DialogWithTextField(BuildContext context) => Container(
height: 280,
decoration: BoxDecoration(
color: Colors.white,
shape: BoxShape.rectangle,
borderRadius: BorderRadius.all(Radius.circular(12)),
),
child: Column(
children: <Widget>[
SizedBox(height: 24),
Text(
"ADD DIALOG TITLE HERE".toUpperCase(),
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.black,
fontWeight: FontWeight.bold,
fontSize: 17,
),
),
SizedBox(height: 10),
Padding(
padding: EdgeInsets.only(top: 10, bottom: 10, right: 15, left: 15),
child: TextFormField(
maxLines: 1,
autofocus: false,
keyboardType: TextInputType.text,
decoration: InputDecoration(
labelText: 'Text Form Field 1',
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(20.0),
),
),
)
),
Container(
width: 150.0,
height: 1.0,
color: Colors.grey[400],
),
Padding(
padding: EdgeInsets.only(top: 10, right: 15, left: 15),
child: TextFormField(
maxLines: 1,
autofocus: false,
keyboardType: TextInputType.text,
decoration: InputDecoration(
labelText: 'Text Form Field 2',
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(20.0),
),
),
)
),
SizedBox(height: 10),
Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
FlatButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text(
"Cancel",
style: TextStyle(
color: Colors.black,
),
),
),
SizedBox(width: 8),
RaisedButton(
color: Colors.white,
child: Text(
"Save".toUpperCase(),
style: TextStyle(
color: Colors.redAccent,
),
),
onPressed: () {
print('Update the user info');
// return Navigator.of(context).pop(true);
},
)
],
),
],
),
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23957 次 |
| 最近记录: |