Flutter框架中,组件间传值的基本方式

这篇具有很好参考价值的文章主要介绍了Flutter框架中,组件间传值的基本方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.构造函数传值

在创建widget时,可以通过构造函数将参数传递给子widget。例如:

class ChildWidget extends StatelessWidget {
  final String title;

  const ChildWidget({Key? key, required this.title}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Text(title);
  }
}

class ParentWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ChildWidget(title: 'Hello World');
  }
}

2.回调函数传值

父widget可以在创建子widget时,传递一个回调函数,当子widget需要把值传给父widget时,就调用这个回调函数。例如:

class ChildWidget extends StatelessWidget {
  final ValueChanged<String> onChanged;

  const ChildWidget({Key? key, required this.onChanged}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return TextField(
      onChanged: (value) {
        onChanged(value); // 调用回调函数
      },
    );
  }
}

class ParentWidget extends StatefulWidget {
  @override
  _ParentWidgetState createState() => _ParentWidgetState();
}

class _ParentWidgetState extends State<ParentWidget> {
  String _text = '';

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        ChildWidget(
          onChanged: (value) {
            setState(() {
              _text = value; // 更新状态
            });
          },
        ),
        Text(_text),
      ],
    );
  }
}

3.InheritedWidget传值

InheritedWidget是Flutter框架提供的一种特殊的widget,它可以沿着widget树向下传递数据。当需要在widget树中共享数据时,可以使用InheritedWidget。例如:

class MyInheritedWidget extends InheritedWidget {
  final String data;

  MyInheritedWidget({Key? key, required this.data, required Widget child})
      : super(key: key, child: child);

  static MyInheritedWidget of(BuildContext context) {
    return context.dependOnInheritedWidgetOfExactType<MyInheritedWidget>()!;
  }

  @override
  bool updateShouldNotify(MyInheritedWidget oldWidget) {
    return data != oldWidget.data;
  }
}

class ChildWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final data = MyInheritedWidget.of(context).data;
    return Text(data);
  }
}

class ParentWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MyInheritedWidget(
      data: 'Hello World',
      child: ChildWidget(),
    );
  }
}

以上是Flutter中实现组件间传值的几种方式,选择合适的方式应根据具体场景来决定。能帮到你的话,就给播主点个关注吧!文章来源地址https://www.toymoban.com/news/detail-708510.html

到了这里,关于Flutter框架中,组件间传值的基本方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flutter中的基本组件

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Text组件(简单样式文本框组件)用于显示简单的样式文本,它的常用属性如下表所示。 TextStyle的常用属性如下表所示。 RichText组件(丰富文本组件)是Flutter提供的一个可以展示多种样式的Widget,经常应用

    2024年02月04日
    浏览(26)
  • Axios传值的几种方式

    axios基本使用 默认是get请求 注意:get请求无请求体,可以有body,但是不建议带 使用get方式进行无参请求  使用get方式请求,参数值直接放在路径中    使用get方式请求,参数拼接在路径中:方式①   使用get方式请求,参数拼接在路径中:方式② 使用get方式请求,拼接多个参

    2024年04月17日
    浏览(31)
  • vue父子组件之间传值的方法

    父传子 方式: props 效果: 把父组件的 fatherName 属性传入子组件,在子组件中使用 父组件代码: 子组件代码: 子传父 方式: $emit 效果: 在子组件触发事件,修改父组件的fatherName属性 父组件代码: 子组件代码: 兄弟传值 方式: eventBus.js 效果: 任意组件之间相互传值 代

    2024年02月09日
    浏览(29)
  • 微信小程序页面传值的5种方式

    微信小程序页面传值的方式有以下几种: 1.URL参数传值:通过在跳转链接中附加参数,在目标页面的onLoad函数中获取参数。 2.全局变量:通过在app.js文件中定义全局变量,在源页面设置变量的值,目标页面通过getApp().globalData获取变量的值。 3.缓存存储:使用wx.setStorageSync()在

    2024年02月15日
    浏览(32)
  • Vue3中子组件向父组件传值的方法

    父组件可以通过props向子组件传值, 子组件可以用过 emits(‘update:prop’, propValue) 修改父组件绑定在此Prop上父组件的值 本文演示了一个可以缓存分页大小(每页显示几行数据)的分页组件的使用, 它是对el-pagination做了一个简单的封装 如下是一个分页组件 核心: 在换页时通过 emit

    2024年02月16日
    浏览(30)
  • Electron 主进程和渲染进程传值及窗口间传值

    1    渲染进程调用主进程得方法  下面是渲染进程得代码: 下面是主进程得代码:  ipcMain.on(\\\"xxx\\\",function () { } )    2 渲染进程与渲染进程之间的传值 使用remote.BrowserWindow在某个渲染进程中打开一个新窗口,并向新窗口中传值 然后在新窗口中html开始Script标签内加入接收监听代码

    2024年02月15日
    浏览(30)
  • Flutter中GetX系列九--路由/页面跳转,传值,中间件(GetPage)

    1.1.使用to方法实现页面基本跳转  1.2.使用Get.toNamed()跳转到命名路由 系统跳转方式  Getx跳转方式 1.3.返回上一级页面Get.back() 系统跳转方式 Getx跳转方式​​​​​​​ 1.4.返回到根路由 系统跳转方式   Getx跳转方式 1.5.跳转到下一个页面的,但是没有返回按钮(一般应用于闪屏

    2024年02月16日
    浏览(38)
  • C# AsyncLocal 是如何实现 Thread 间传值

    这个问题的由来是在 .NET高级调试训练营第十期 分享ThreadStatic底层玩法的时候,有朋友提出了 AsyncLocal 是如何实现的,虽然做了口头上的表述,但总还是会不具体,所以觉得有必要用 文字+图表 的方式来系统的说一下这个问题。 在 C# 编程中实现多线程以及线程切换的方式大

    2024年01月25日
    浏览(33)
  • C# Winform 多进程窗体间传值->SendMessage()

    在 C# 的 Windows Forms 中,使用 Windows API 的 SendMessage 方法可以实现窗口间的消息通传递,当然也可以在不同的进程之间发送消息。接下来,我将为您提供一个基本的示例,演示如何使用 SendMessage 以及如何重写 WndProc 方法来接收并处理消息。 首先,你需要添加对Windows API的引用:

    2024年02月14日
    浏览(31)
  • uniapp框架组件、props对组件传值、对组件绑定事件的使用、子组件给父组件传值

    新建组件的方式,在components目录下新建组件,然后就能在pages页面当中直接使用该组件 test.vue home.vue: 页面效果如下: props的作用就是可以从外部的标签当中传值到标签当中的内容 props的使用方法:在子组件当中,props是一个对象,对象当中的数据也是一个对象,该有两个属性

    2024年02月15日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包