flutterでandroidのアプリを作成しています。
TextFieldで文字を入力後、Navigator.pushで画面を遷移し戻るとソフトキーボードが起動してしまいます。
どうすれば画面が戻った際にキーボードを開かないようにできるでしょうか?
試したこと
- AndroidManifest.xmlのactionに以下のようにstateAlwaysHiddenやstateHiddenをつけても効果がなかったです。
xml
1android:windowSoftInputMode="stateAlwaysHidden|adjustResize"
- 遷移の前にfocusを外すように設定しても効果はなかったです。
dart
1FocusScope.of(context).unfocus();
以下はmain.darのコードです。
dart
1import 'package:flutter/material.dart'; 2 3void main() { 4 runApp(MyApp()); 5} 6 7class MyApp extends StatelessWidget { 8 9 Widget build(BuildContext context) { 10 return MaterialApp( 11 title: 'Flutter Navigation Demo', 12 theme: ThemeData( 13 primarySwatch: Colors.blue, 14 ), 15 home: FirstScreen(), 16 ); 17 } 18} 19 20class FirstScreen extends StatefulWidget { 21 22 _FirstScreenState createState() => _FirstScreenState(); 23} 24 25class _FirstScreenState extends State<FirstScreen> { 26 final TextEditingController _textController = TextEditingController(); 27 28 29 void dispose() { 30 _textController.dispose(); 31 super.dispose(); 32 } 33 34 35 Widget build(BuildContext context) { 36 return Scaffold( 37 appBar: AppBar( 38 title: Text('First Screen'), 39 ), 40 body: Padding( 41 padding: const EdgeInsets.all(16.0), 42 child: Column( 43 mainAxisAlignment: MainAxisAlignment.center, 44 children: [ 45 TextField( 46 controller: _textController, 47 decoration: const InputDecoration( 48 labelText: 'Enter some text with gesture', 49 border: OutlineInputBorder(), 50 ), 51 ), 52 SizedBox(height: 20), 53 ElevatedButton( 54 child: Text('Go to Second Screen'), 55 onPressed: () { 56 FocusScope.of(context).unfocus(); 57 Navigator.push( 58 context, 59 MaterialPageRoute(builder: (context) => SecondScreen()), 60 ); 61 }, 62 ), 63 ], 64 ), 65 ), 66 ); 67 } 68} 69 70class SecondScreen extends StatelessWidget { 71 72 Widget build(BuildContext context) { 73 return Scaffold( 74 appBar: AppBar( 75 title: Text('Second Screen'), 76 ), 77 body: Center( 78 child: ElevatedButton( 79 child: Text('Go back'), 80 onPressed: () { 81 Navigator.pop(context); 82 }, 83 ), 84 ), 85 ); 86 } 87}
![guest](/img/icon/icnUserSample.jpg)