design-patterns - 自定义小部件的回调中没有上下文
问题描述
我是 Flutter 的新手,所以比我更有经验的人可能很容易回答这个问题。这更多的是关于设计的问题,而不是代码问题。
有时我想编写可重用的小部件并使它们有点通用我想为用户输入回调,以便父小部件可以订阅然后采取适当的行动而不是硬编码路由等。例如,我想从我的回调中导航,因为我没有上下文。那么如何在 Flutter 中进行设计呢?
解决方案
您始终可以在无状态小部件中使用可选/必需的上下文参数。对于有状态的小部件,上下文通常是可用的,但如果您出于某种原因需要父上下文,您始终可以将其传递给您的小部件。看看下面的例子
class GenericWidgetFoo extends StatelessWidget {
final BuildContext context;
final Key key;
final String name;
const GenericWidgetFoo(
{this.key, @required this.context, @required this.name});
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Center(
child: Text(
this.name,
style: TextStyle(
color: Theme.of(context).primaryColorLight,
),
)),
);
}
}
推荐阅读
- python - 使用 boto3 在 S3 存储桶中移动对象的最快方法
- python - 如何获得连接组件的最大值和坐标?
- paypal - 由于监管要求,Paypal 自适应支付阻止支付
- javascript - 当部署在 cpanel(vps) 上时,客户端不会与 socket.io (nodejs) 服务器建立连接。错误:意外的服务器响应:101
- javascript - 为什么这个由 PHP 生成的 Javascript 代码不起作用?
- windows - 命令上的“/A”是什么 - 启动“”/max“C:\Program Files Xxxxx.exe”/A“pagemode=FullScreen”“yourfile direction and name.pdf”
- javascript - 如何仅获取要在 react.js 中显示的特定变化数据
- javascript - 网络浏览器已停止显示网页
- c# - swagger 部署后损坏
- javascript - 如何绘制特殊的多折线图(任何 javascript 库)?