2017-12-25 27 views
1

Ich möchte ein TextField konzentrieren, nachdem der Benutzer zurück navigiert mit der Zurück-Taste in der Navigationsleiste. Wie machst du das? Ich habe versucht, die autofocus Eigenschaft des TextField Widget. Dies funktioniert jedoch nur, wenn Sie vorwärts navigieren, wenn das Widget zum ersten Mal erstellt wird. Auf iOS gibt es die viewDidAppear Methode, gibt es etwas ähnliches in Flutter?Flattern: Focus Tastatur auf der Rückseite Navigation

Danke!

Antwort

2

Sie müssen Ihre TextField ein FocusNode, zur Verfügung zu stellen und dann können Sie den Benutzer await zurück zu gehen und setzen FocusScope.of(context).requestFocus(myNode), wenn die Navigation geschieht.

Einfache Demonstration:

enter image description here

class FirstPage extends StatefulWidget { 
    @override 
    _FirstPageState createState() => new _FirstPageState(); 
} 

class _FirstPageState extends State<FirstPage> { 
    FocusNode n = new FocusNode(); 
    @override 
    Widget build(BuildContext context) { 
    return new Scaffold(
     appBar: new AppBar(title:new Text("First Page")), 
     body: new Center(
     child: new Column(
      children: <Widget>[ 
      new TextField(
       focusNode: n, 
      ), 
      new RaisedButton(onPressed:()async{ 

       bool focus = await Navigator.of(context).push(new MaterialPageRoute(builder: (_)=>new SecondPage())); 
       if (focus == true|| focus==null){ 

        FocusScope.of(context).requestFocus(n); 

       } 
       }, 
      child: new Text("NAVIGATE"),), 
      ], 
     ), 
    ), 
    ); 
    } 
} 


class SecondPage extends StatelessWidget { 
    @override 
    Widget build(BuildContext context) { 
    return new Scaffold(
     appBar: new AppBar(title:new Text("Second Page")), 
    body: new Center(
     child: new RaisedButton(onPressed:(){Navigator.pop(context,true);},child: new Text("BACK"),), 
    ), 
    ); 
    } 
} 
Verwandte Themen