flutter - Flutter 将数据传递给子小部件
问题描述
使用的小部件越多,从父到子传递数据可能会很混乱,从子到子再到子。有没有办法使用第一个父亲的数据而不继续传递它,提供程序用于在同一级别的小部件之间,屏幕之间传递数据,但我的意思是一个屏幕有很多孩子的情况。
import 'package:flutter/material.dart';
class FirstFather extends StatelessWidget {
const FirstFather({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Child(
prop: "exmaple",
);
}
}
class Child extends StatelessWidget {
final String prop;
const Child({Key key, this.prop}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
child: Grandson(
prop: prop,
),
);
}
}
class Grandson extends StatelessWidget {
final String prop;
const Grandson({Key key, this.prop}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
child: Text(prop),
);
}
}
解决方案
使用 InheritedWidget:
https://api.flutter.dev/flutter/widgets/InheritedWidget-class.html
当您将它放在 Widget 树的顶部时,所有的孩子都可以访问数据。
推荐阅读
- android - 我们可以更改 android 电视搜索结果显示优先级吗?
- java - 启动了一个名为 AMQP Connection 的线程,但未能停止它
- html - 使部门与其他部门一起扩大
- r - 如何在 R 中绘制每年每月的推文总数?
- angular - 如何为Angular Material Table的filterPredicate函数创建单元测试
- c - scanf 接受的输入比预期的要多
- react-navigation-v6 - 嵌套在 Material Bottom Tab 内的堆栈在您第二次导航时不显示内容(React Navigation v6)
- http - 如何在代理中使用 https URL 处理 POST/GET?
- python - 符号求解不适定方程
- python - 我有一个无法解决的错误“列表索引超出范围”