Dart =>新的_FocusVisibilityDemoState(); } 类_FocusVisibilityDemoState扩展状态{ @凌驾 小部件构建(构建上下文){ 归还新脚手架( appBar:new appBar(标题:新建文本(“文本对话框演示”
=>新的_FocusVisibilityDemoState(); } 类_FocusVisibilityDemoState扩展状态{ @凌驾 小部件构建(构建上下文){ 归还新脚手架( appBar:new appBar(标题:新建文本(“文本对话框演示”), 正文:新中心( 孩子:新升起的按钮( 按下按钮:\u显示对话框, 孩子:新文本(“推我”), ), ), ); } _showDialog()异步{ 等待显示对话框( 上下文:上下文, 子级:新建\u系统填充(子级:新建警报对话框( contentPadding:const EdgeInsets.all(16.0), 内容:新行( 儿童:[ 新扩展( 孩子:新文本字段( 自动对焦:对, 装饰:新的输入装饰( labelText:“全名”,hintText:“如约翰·史密斯”), ), ) ], ), 行动:[ 新扁平按钮( 子项:常量文本(“取消”), 已按下:(){ Navigator.pop(上下文); }), 新扁平按钮( 子项:常量文本(“打开”), 已按下:(){ Navigator.pop(上下文); }) ], ),), ); } } 类\u SystemPadding扩展了无状态小部件{ 最后一个孩子; _SystemPadding({Key-Key,this.child}):super(Key:Key); @凌驾 小部件构建(构建上下文){ var mediaQuery=mediaQuery.of(上下文); 返回新的动画容器( 填充:mediaQuery.viewInsets, 持续时间:常量持续时间(毫秒:300), 儿童:儿童); } }Dart =>新的_FocusVisibilityDemoState(); } 类_FocusVisibilityDemoState扩展状态{ @凌驾 小部件构建(构建上下文){ 归还新脚手架( appBar:new appBar(标题:新建文本(“文本对话框演示”,dart,flutter,Dart,Flutter,=>新的_FocusVisibilityDemoState(); } 类_FocusVisibilityDemoState扩展状态{ @凌驾 小部件构建(构建上下文){ 归还新脚手架( appBar:new appBar(标题:新建文本(“文本对话框演示”), 正文:新中心( 孩子:新升起的按钮( 按下按钮:\u显示对话框, 孩子:新文本(“推我”), ), ), ); } _showDialog()异步{ 等待显示对话框( 上下文:上下文, 子级:新建\u系统填充(子级:新建警报对话框( co
在这种情况下,您可能需要使用全屏键入。@标记如何获取在textfield中输入的值?@ArgaPK您应该实例化TextEditingController实例,并将其传递给textfield的“controller”参数。然后,设置TextField的“OnSubmited”方法,当您点击“OK”时将调用该方法,该方法有一个字符串参数,即您在TextField中输入的数据。您还可以设置“onChanged”方法,因此每次在文本字段中输入内容时,都会调用“onChanged”。不,我不想添加多个文本字段-我只想让用户输入一个文本值。在我的例子中,对话框是合适的,因为它可以保持屏幕的干净和最小化。让我解释一下:想象一个游戏的主屏幕有两个按钮:“创建一个新游戏”和“访问一个共享游戏”。当用户单击第二个按钮时,应用程序要求用户键入用户想要访问的游戏的唯一ID。我的错,我发现这是一个错误,请检查答案中编辑的部分。
padding:mediaQuery.padding,
需要更改为padding:mediaQuery.viewInsets,
@aziza如何获取在文本字段中输入的值?要获取textfield
的值,可以使用textededitingcontroller
。
import 'package:flutter/material.dart';
class FocusVisibilityDemo extends StatefulWidget {
@override
_FocusVisibilityDemoState createState() => new _FocusVisibilityDemoState();
}
class _FocusVisibilityDemoState extends State<FocusVisibilityDemo> {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text('Text Dialog Demo')),
body: new Center(
child: new RaisedButton(
onPressed: _showDialog,
child: new Text("Push Me"),
),
),
);
}
_showDialog() async {
await showDialog<String>(
context: context,
child: new AlertDialog(
contentPadding: const EdgeInsets.all(16.0),
content: new Row(
children: <Widget>[
new Expanded(
child: new TextField(
autofocus: true,
decoration: new InputDecoration(
labelText: 'Full Name', hintText: 'eg. John Smith'),
),
)
],
),
actions: <Widget>[
new FlatButton(
child: const Text('CANCEL'),
onPressed: () {
Navigator.pop(context);
}),
new FlatButton(
child: const Text('OPEN'),
onPressed: () {
Navigator.pop(context);
})
],
),
);
}
}
void main() {
runApp(new MaterialApp(home: new FocusVisibilityDemo()));
}
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(home: new MyApp(),));
}
class MyApp extends StatefulWidget {
@override
MyAppState createState() => new MyAppState();
}
class MyAppState extends State<MyApp> {
FullScreenDialog _myDialog = new FullScreenDialog();
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Fill this form"),
),
body: new Column(
children: <Widget>[
new TextField(controller: new TextEditingController(
text: "Add a single text field"),),
new Card(child: new ListTile(
title: new Text("Click to add your top 3 amazing skills"),
subtitle: new Text(
"${_myDialog._skillOne} ${_myDialog._skillTwo} ${_myDialog
._skillThree}"),
onTap: () {
Navigator.push(context, new MaterialPageRoute(
builder: (BuildContext context) => _myDialog,
fullscreenDialog: true,
));
},
),
),
],
)
);
}
}
class FullScreenDialog extends StatefulWidget {
String _skillOne = "You have";
String _skillTwo = "not Added";
String _skillThree = "any skills yet";
@override
FullScreenDialogState createState() => new FullScreenDialogState();
}
class FullScreenDialogState extends State<FullScreenDialog> {
TextEditingController _skillOneController = new TextEditingController();
TextEditingController _skillTwoController = new TextEditingController();
TextEditingController _skillThreeController = new TextEditingController();
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Add your top 3 skills"),
),
body: new Padding(child: new ListView(
children: <Widget>[
new TextField(controller: _skillOneController,),
new TextField(controller: _skillTwoController,),
new TextField(controller: _skillThreeController,),
new Row(
children: <Widget>[
new Expanded(child: new RaisedButton(onPressed: () {
widget._skillThree = _skillThreeController.text;
widget._skillTwo = _skillTwoController.text;
widget._skillOne = _skillOneController.text;
Navigator.pop(context);
}, child: new Text("Save"),))
],
)
],
), padding: const EdgeInsets.symmetric(horizontal: 20.0),)
);
}
}
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(home: new FocusVisibilityDemo()));
}
class FocusVisibilityDemo extends StatefulWidget {
@override
_FocusVisibilityDemoState createState() => new _FocusVisibilityDemoState();
}
class _FocusVisibilityDemoState extends State<FocusVisibilityDemo> {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text('Text Dialog Demo')),
body: new Center(
child: new RaisedButton(
onPressed: _showDialog,
child: new Text("Push Me"),
),
),
);
}
_showDialog() async {
await showDialog<String>(
context: context,
child: new _SystemPadding(child: new AlertDialog(
contentPadding: const EdgeInsets.all(16.0),
content: new Row(
children: <Widget>[
new Expanded(
child: new TextField(
autofocus: true,
decoration: new InputDecoration(
labelText: 'Full Name', hintText: 'eg. John Smith'),
),
)
],
),
actions: <Widget>[
new FlatButton(
child: const Text('CANCEL'),
onPressed: () {
Navigator.pop(context);
}),
new FlatButton(
child: const Text('OPEN'),
onPressed: () {
Navigator.pop(context);
})
],
),),
);
}
}
class _SystemPadding extends StatelessWidget {
final Widget child;
_SystemPadding({Key key, this.child}) : super(key: key);
@override
Widget build(BuildContext context) {
var mediaQuery = MediaQuery.of(context);
return new AnimatedContainer(
padding: mediaQuery.viewInsets,
duration: const Duration(milliseconds: 300),
child: child);
}
}