【发布时间】:2021-08-10 21:42:43
【问题描述】:
我在屏幕上有一些基于地图内容动态呈现的小部件。我已经通过一个文本字段更新了地图的内容,并且它一直运行良好,直到我决定将此文本字段移动到一个单独的类/屏幕。如何从这个单独的屏幕正确调用 setState 并在我返回时反映我的更新?
顺便说一句,我花了很多时间试图研究这个问题,但除了可能需要使用回调函数之外,我似乎无法解决任何问题?
NoteSection 是从提醒地图动态呈现的
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
final Map<String, String> reminders = {};
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Note App'),
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => AddNoteScreen(),
),
);
},
),
body: Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
NoteSection(),
],
),
);
}
}
我正在更新地图的屏幕代码如下
class AddNoteScreen extends StatefulWidget {
@override
_AddNoteScreenState createState() => _AddNoteScreenState();
}
final titleController = TextEditingController();
final bodyController = TextEditingController();
String noteBodyText = bodyController.text;
String noteTitleText = titleController.text;
class _AddNoteScreenState extends State<AddNoteScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Note App'),
),
body: Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
titleTextField,
bodyTextField,
Container(
padding: EdgeInsets.only(
right: 10,
bottom: 10,
),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Colors.amber,
),
child: Text(
'Add Note',
style: TextStyle(color: Colors.white),
),
onPressed: () {
setState(() {
noteTitleText = titleController.text;
noteBodyText = bodyController.text;
reminders[noteTitleText] = noteBodyText;
titleController.clear();
bodyController.clear();
Navigator.pop(context);
});
},
),
),
],
),
);
}
}
【问题讨论】:
标签: flutter dart callback widget