首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在dart中将数据从实用程序类传递到主类

在Dart中,可以通过以下几种方式将数据从实用程序类传递到主类:

  1. 构造函数参数传递:可以在主类的构造函数中接收实用程序类的实例,并将数据作为参数传递。例如:
代码语言:txt
复制
class UtilityClass {
  String data;

  UtilityClass(this.data);
}

class MainClass {
  UtilityClass utility;

  MainClass(this.utility);
}

void main() {
  UtilityClass utility = UtilityClass("Hello");
  MainClass main = MainClass(utility);

  print(main.utility.data); // 输出:Hello
}
  1. Setter方法传递:在主类中定义一个Setter方法,通过该方法接收实用程序类的实例,并将数据设置到主类的属性中。例如:
代码语言:txt
复制
class UtilityClass {
  String data;
}

class MainClass {
  UtilityClass _utility;

  set utility(UtilityClass utility) {
    _utility = utility;
  }

  void printData() {
    print(_utility.data);
  }
}

void main() {
  UtilityClass utility = UtilityClass();
  utility.data = "Hello";

  MainClass main = MainClass();
  main.utility = utility;

  main.printData(); // 输出:Hello
}
  1. 静态方法传递:在实用程序类中定义一个静态方法,该方法返回实用程序类的实例,并在主类中调用该方法获取实例。例如:
代码语言:txt
复制
class UtilityClass {
  String data;

  static UtilityClass getInstance(String data) {
    UtilityClass utility = UtilityClass();
    utility.data = data;
    return utility;
  }
}

class MainClass {
  UtilityClass utility;

  MainClass(this.utility);
}

void main() {
  UtilityClass utility = UtilityClass.getInstance("Hello");
  MainClass main = MainClass(utility);

  print(main.utility.data); // 输出:Hello
}

这些方法可以根据实际需求选择适合的方式来传递数据。在Dart中,可以使用构造函数参数、Setter方法或静态方法来实现数据从实用程序类到主类的传递。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Flutter 后台任务

在 Flutter 中,MethodChannel 和 EventChannel 是可以本地端发送和接收信息 Dart 端的方式,它们被用于 Flutter 插件。...为了本地后台运行 Dart 代码,需要执行几个步骤,在详细介绍代码前,我想用图表来展示它,然后解释它: 让我们来看看这个图表并解释每个部分,您所见,有六个主要步骤: 在 Dart 中定义一个无参...第二部分只是一个辅助,用于保存和读取SharedPreferences中的数据。 这个解释是针对我们图表中的 2”。...后台启动 Dart 引擎 这就是故事的核心部分,我们想从后台启动 Dart 引擎和 VM,但不启动隔离和 UI 部分。 如图 3 中所示,它说的是后台进程初始化器。...看看如何在 callbackDispatcher 中使用它: 在回调调度程序中(在启动完成后本地调用),我们现在注册自己的插件事件,然后调用startPowerChangesListener并在侦听器中捕获事件

3.2K30
  • 【译】Flutter架构综述

    底层到顶层,我们有: 基础和构件服务,动画,绘画和手势,在底层基础上提供了常用的抽象。 渲染层提供了一个处理布局的抽象。通过这一层,你可以建立一个可渲染对象的树。...和其他一样,你可以在widget中使用构造函数来初始化它的数据,所以build()方法可以确保任何子widget被实例化时都有它需要的数据。...因此,第三种小组件类型 InheritedWidget 提供了一种共享祖先中抓取数据的简单方法。...数据像Map这样的Dart类型序列化为标准格式,然后反序列化为Kotlin(HashMap)或Swift(Dictionary)中的等价表示。 ?...外来函数接口(FFI)模型可以比平台通道快很多,因为不需要序列化来传递数据。相反,Dart运行时提供了在由Dart对象支持的堆上分配内存的能力,并对静态或动态链接的库进行调用。

    5.6K10

    AngularDart4.0 英雄之旅-教程-04明细 顶

    Hero  分开使用并将Heroapp_component.dart 中移动到它自己的文件中,创建lib/src文件夹来装Hero源文件:lib/src/hero.dart class Hero...heroes = mockHeroes; // ··· } 英雄数据实现分开,因为英雄名字最终将来自数据服务。  ...当用户列表中选择一个英雄时,选择的英雄应该出现在细节视图中。 这个UI模式被称为“/细节”。在这种情况下,主人是英雄列表,细节是选择的英雄。...接下来,您将通过selectedHero组件属性将链接到详细信息,该属性绑定单击事件。...您将Hero移到lib / src下的自己的文件中。 你增加了选择英雄和显示英雄的细节的能力。 您了解了如何在组件模板中使用核心指令ngIf和ngFor。

    3K30

    在 Flutter 和 Dart 中取消 Future 的 3 种方法

    ❝作者:坚果 公众号:"大前端之旅" 华为云享专家,InfoQ签约作者,阿里云专家博,51CTO博客首席体验官,开源项目GVA成员之一,专注于大前端技术的分享,包括Flutter,小程序,安卓,VUE...它提供了dart:async风格的实用程序来增强异步计算。...按钮的背景靛蓝变为红色,其标签“开始”变为“取消”,现在您可以使用它来取消Future。 如果您在Future完成前 5 秒内点击取消按钮,屏幕将显示“Future已被取消”。...): // main.dart import 'package:flutter/material.dart'; import 'package:async/async.dart'; void main...其中选择一个以在您的应用程序中实现,以使其在处理异步任务时更加健壮和吸引人。

    2.4K10

    腾讯云IM Flutter-原生混合开发方案接入实践

    当需要两端通信时,传递当前用户信息,传递音视频通话数据,触发离线推送数据,可采用Method Channel方式进行。.../Flutter/在 Xcode 中将生成的 frameworks 集成到你的既有应用中。...Future handleClickNotification(Map msg): 点击通知处理事件,来自Native透传, Map 中取出数据,跳转至对应的子模块,某个具体会话。...新建 chat_main.dart文件,用于Chat模块入口。该页面也是Flutter Chat模块的首页。在Demo中,该页面在未登录前为加载状态,登录后展示会话列表。...新建call_main.dart文件,用于Call模块入口。 该组件用于注入音视频通话插件所需绑定的navigatorKey。 详细代码可查看Demo源码。

    7.1K50

    实现Flutter应用中的全局导航栏效果

    InheritedWidget是Flutter中用于在组件树中共享数据的一种机制。它允许将数据沿着组件树向下传递,并在需要时在任何地方访问该数据。...在面向对象编程中,混入(Mixin)是一种将的某些功能注入其他中的技术。它允许在不继承自其他的情况下,复用和扩展已有的功能。...在Dart和Flutter中,混入是通过使用关键字with来实现的,可以将一个或多个混入进行组合,从而增强的功能。...如何创建和使用混入 要创建混入,只需要定义一个普通的,并在其中定义需要混入的功能。然后,可以在其他中使用with关键字将混入组合在一起,从而使具有混入的功能。...如何使用混入实现全局导航栏效果 要使用混入实现全局导航栏效果,可以创建一个混入来管理导航栏的状态,并在需要使用导航栏的页面中将这个混入组合在一起。

    14011

    Dart 代码的组件集合Dart VM

    例如在 GC VM 中将 dart::ConcurrentSweeperTask 发布全局 VM 的线程池,而不是生成专用线程来执行后台清除,「并且线程池实现要么选择空闲线程,要么在没有可用线程时生成新线程...为了保持直接源代码执行 Dart ,这里托管一个名为 kernel service 的辅助 isolate,它处理将 Dart 源代码编译内核中,然后 VM 运行生成的内核二进制文件。...,有关的信息才会完全反序列化」,在这个阶段,成员会内核二进制文件中读取,然而在此阶段不会反序列化完整的函数体,只会反序列化它们的签名。...例如优化编译器可能会观察某个 C 从未被扩展,并在类型传播过程中使用此信息。然而随后的动态代码加载或终结可能会引入一个子类 C。...、分配哪些的实例,以及类型如何在程序运转。

    1.6K30

    Flutter 中的 Shimmer 动画效果

    用户体验 (UX) 的角度来看,主要是向您的用户展示正在加载。处理向用户传递信息正在加载的一种主流方法是在不准确的加载物质类型的形状上显示带有微光动画的铬色调。...它演示了应用程序服务器或本地数据库加载信息。有多种方法可以显示这种效果。在这种情况下,我们通常会在加载信息后对与第一个小部件完全相似的小部件进行动画处理。...此演示视频展示了如何在颤动中创建微光动画效果。它展示了如何在 Flutter应用程序中使用shimmer包来实现微光动画效果。...**direction:**您可以从左到右、从右到左、开始结束或底到顶调整微光高光颜色的方向,为此,您只需传递具有确定方向的 ShimmerDirection。...**在这个中,我们将创建三个最终字符串,分别是 urlImg、title 和 detail。我们还创建了所有字符串项的构造函数。

    6K20

    Flutter 1.22 正式发布

    该软件包有助于解决诸如如何正确地将字符串(“ A in text in English”)缩写为前15个字符的问题。使用String,该缩写为“ A??...Navigator 2.0 如果您以前在Flutter应用程序中使用过导航功能,则可能已经注意核心数据结构(用户正在浏览的页面堆栈)对您而言是隐藏的。...我们已经在Scrollable中提供了支持,例如ListView和SingleChildScrollView(记住用户的滚动位置)和TextField(恢复他们输入的文本),并且我们计划将其扩展其他小部件...您可以通过将--analyze-size标志传递给以下任何命令来使用该工具收集分析所需的数据: flutter build apk flutter build appbundle flutter build...此外,收集数据还可以作为JSON文件使用,供Dart DevTools使用,它使您可以按照flutter.dev上的说明进一步浏览应用程序的内容,查明大小问题并查看两个不同JSON文件之间的更改。

    7.5K20

    最完整的PyTorch数据科学家指南(2)

    因此,我们根据需要从卷积运算中获得了输出,并且我掌握了有关如何在我设计的任何神经网络中使用此层的足够信息。 数据集和数据加载器 在训练或测试时,我们如何将数据传递神经网络?...我们绝对可以像上面一样传递张量,但是Pytorch还为我们提供了预先构建的数据集,以使我们更轻松地将数据传递神经网络。...但是,为了给出数据集的具体示例,假设我们必须使用具有以下结构的文件夹的图像将图像传递Image Neural网络: ?...我们需要继承Dataset,并需要定义两个方法来创建自定义数据集。 ? 例如,我们可以创建一个简单的自定义数据集,该数据文件夹返回图像和标签。...现在,我们可以Dataloader像以前一样将此数据集与实用程序一起使用 。它的工作方式与PyTorch提供的先前数据集相似,但没有一些实用程序功能。

    1.2K20

    Flutter UI如何使用Provide实现主题切换详解

    背景 provide是谷歌官方出品的一个状态管理框架flutter-provide,它允许在小部件树中传递数据,它被设计为ScopedModel的替代品,允许我们更加灵活地处理数据类型和数据 为什么需要状态管理...在进行项目的开发时,我们往往需要管理不同页面之间的数据共享,在页面功能复杂,状态达到几十个上百个的时候,我们会难以清楚的维护我们的数据状态,本文将以主题切换这个功能使用状态管理来讲解如何在Flutter...setTheme(payload) async { theme = payload; notifyListeners(); } } 用法同ScopedModel差不多,不过不需要继承Model,...只需要混入ChangeNotifier,通过notifyListeners通知听众刷新 封装Store (没错,这里已经要快完成所有步骤了) 新建 lib/store/index.dart 文件...'; import 'package:efox_flutter/store/index.dart' show ConfigModel, Store; /** * name: 颜色名称 red *

    2.1K20

    Flutter 构建完整应用手册-导航器 顶

    数据发送到新屏幕 通常,我们不仅要导航新的屏幕,还要将一些数据传递屏幕。 例如,我们经常想传递关于我们点击的项目的信息。 请记住:屏幕只是部件™。 在这个例子中,我们将创建一个Todos列表。...路线 定义一个Todo 创建Todos列表 创建一个可以显示关于待办事项信息的详情屏幕 导航并将数据传递详情屏幕 1.定义一个Todo 首先,我们需要一种简单的方法来表示Todos。...在这个例子中,我们将创建一个包含两部分数据:title和description。...new EdgeInsets.all(16.0), child: new Text('${todo.description}'), ), ); } } 4.导航并将数据传递详情屏幕...当用户点击按钮时,应该关闭选择屏幕并让屏幕知道哪个按钮被点击! 现在,我们将定义UI,并确定如何在下一步中返回数据

    4.9K10

    开始使用-编写你的第一个Flutter应用程序 顶

    如果您熟悉面向对象的代码和基本编程概念(变量,循环和条件),则可以完成本教程。 您不需要以前使用Dart或移动编程的经验。...这个将保存随着用户滚动而无限增长的生成的单词对,以及最喜欢的单词对,因为用户通过切换心脏图标来将它们列表中添加或删除。 你会一点一点地建立这个。...两个参数传递给函数 - BuildContext和行迭代器,i 迭代器0开始,每次调用该函数时递增,每次建议的单词配对一次。 该模型允许建议的列表在用户滚动时无限增长。...MyApp中删除Scaffold和AppBar实例。 这些将由RandomWordsState管理,这使得用户在下一步中从一个屏幕导航另一个屏幕时,可以更轻松地更改应用栏中的路由名称。...lib/main.dart 第6步:导航新的屏幕 在这一步中,您将添加一个显示收藏夹的新屏幕(在Flutter中称为路由)。 您将学习如何在主路由和新路由之间导航。

    9.5K20

    《深入浅出DartDart中的泛型

    这是在许多编程语言中都存在的一种重要的特性,Dart也不例外。在这篇文章中,我们将深入探讨Dart中的泛型。 泛型的概念 在讨论泛型如何在Dart中工作之前,我们首先需要了解什么是泛型。...类型安全:当我们使用泛型时,Dart的静态类型系统将确保我们的代码是类型安全的。我们只能将正确的类型传递给泛型或方法,否则我们会在编译时得到一个错误。...集合中应该存储哪种类型的数据。...创建泛型 你也可以在你自己的中使用泛型。在定义中,只需在名后面加上尖括号()和一个或多个类型参数即可。...如果我们试图将非整数类型的值传递给Box,D art将报错,因为Box只接受整数。 创建泛型函数和方法 你可以在函数或方法上使用泛型。

    19130
    领券