我已經看到了對我的問題的類似答案,示例是如何將資料從子小部件傳遞到其父小部件,但資料是通過 onPressed 事件傳遞的。如何在沒有任何 onPressed 或 onTap 事件的情況下將資料從我的子小部件傳遞到父小部件。
代碼
class ParentWidget extends StatelessWidget {
String? passedData;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ChildWidget(),
Text(passedData != null ? passedData! : 'No data passed'),
],
),
);
}
}
//How can i pass the title string to the ParentWidget as passedData String
class ChildWidget extends StatelessWidget {
String title = 'Happy New Year';
@override
Widget build(BuildContext context) {
return Center(
child: Container(
child: Text(title),
));
}
}
uj5u.com熱心網友回復:
您可以直接在 build 方法中使用回呼。使用setState 需要等待一幀來處理構建錯誤。我正在使用addPostFrameCallback.
class ParentWidget extends StatefulWidget {
const ParentWidget({
Key? key,
}) : super(key: key);
@override
State<ParentWidget> createState() => _ParentWidgetState();
}
class _ParentWidgetState extends State<ParentWidget> {
String? passedData;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ChildWidget(
fallback: (p0) {
WidgetsBinding.instance!.addPostFrameCallback((timeStamp) {
setState(() {
passedData = p0;
});
});
},
),
Text(
passedData == null ? 'No data passed' : passedData!,
),
],
),
);
}
}
class ChildWidget extends StatelessWidget {
final String title = 'Happy New Year';
final Function(String) fallback;
const ChildWidget({
Key? key,
required this.fallback,
}) : super(key: key);
@override
Widget build(BuildContext context) {
fallback(title);
return Center(
child: Container(
child: Text(title),
));
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/400735.html
標籤:扑
下一篇:在顫動中使用十六進制顏色更改原色
