如何解决TextField不在移动平台上的AppStart上关注但在模拟器上有效
我正在编写的notes-app应该在应用启动时自动聚焦在文本字段上。它在AndroidStudio模拟器上执行此操作,但是当我在手机上安装该应用程序时不执行此操作。 为了在Android Studio中进行仿真,我使用了Pixel_3a_API_26和Pixel 2 API 26,并且在这两个仿真器上都可以对文本字段进行自动聚焦。 但是,当我在手机上安装该应用程序时,它不起作用。
import 'dart:async';
import 'dart:io';
import 'package:Flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:Fluttertoast/Fluttertoast.dart';
void main() {
runApp(MaterialApp(
home: Home(),));
}
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
initState(){
super.initState();
getNotes();
}
List<String> notes = [];
getNotes() async{
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
prefs.containsKey("notes") ? notes = prefs.get("notes").split(",") : prefs.setString("notes","");
FocusScope.of(context).requestFocus(myFocusNode);
});
}
writeNotes() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
prefs.setString("notes",notes.toString().substring(1,notes
.toString()
.length - 1));
});
}
final myController = TextEditingController();
FocusNode myFocusNode = FocusNode();
int editNoteIndex = -1;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
"Notes"
),backgroundColor: Colors.black,centerTitle: true,),body: Column(
children: [
Flexible(
child: ListView.builder(
itemCount: notes.length,itemBuilder: (context,index) {
return Card(
child: ListTile(
onTap: () {
myController.text = notes[index].trim();
FocusScope.of(context).unfocus();
Timer(const Duration(milliseconds: 1),() {
FocusScope.of(context).requestFocus(myFocusNode);
});
editNoteIndex = index;
},title: Text(notes[index]),trailing: FlatButton(
onpressed: () {
setState(() {
notes.removeAt(index);
writeNotes();
});
},child: Text("Delete"),color: Colors.red,));
}),Expanded(
flex: 0,child: Align(
alignment: FractionalOffset.bottomCenter,child: Container(
child: TextField(
controller: myController,keyboardType: TextInputType.multiline,minLines: 2,maxLines: 100,focusNode: myFocusNode,decoration: Inputdecoration(hintText: "Enter brilliant idea",suffixIcon: IconButton(icon: Icon(Icons.add),onpressed: (){setState(() {
if(myController.text.isNotEmpty){
Fluttertoast.showToast(msg: "Can't add empty Note");
if(editNoteIndex != -1){
notes.removeAt(editNoteIndex);
notes.add(myController.text);
editNoteIndex = -1;
writeNotes();
} else{
notes.add(myController.text);
writeNotes();
}
myController.clear();
}else{
Fluttertoast.showToast(
msg: "This is Center Short Toast",toastLength: Toast.LENGTH_SHORT,gravity: ToastGravity.CENTER,timeInSecForIosWeb: 1,backgroundColor: Colors.red,textColor: Colors.white,fontSize: 16.0
);
}
});},autofocus: true,)
],);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。