问题:
Flutter 的 Dialog被键盘遮挡,如何解决?
解决方法:
尝试使用 FullScreenDialog,下面是示例代码:
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),) ); } }