当前位置: 首页 > 知识库问答 >
问题:

Dart中的全局变量

松桐
2023-03-14

我尝试创建一个Dart单页应用程序

我已经创建了第一个自定义元素(自定义应用程序),它包含整个应用程序。它有一个容器,用于呈现视图。和一个侧导航,它将包含用户信息,并在用户登录时更新。

我想在视图之间共享信息。如何在自定义应用程序中定义全局变量,并与其他视图共享?

例如,当你启动应用程序时,你没有经过身份验证。当你呼叫/登录(登录视图)时,你会有一个登录表单。我希望,当您登录应用程序时,自定义应用程序元素存储嵌套视图登录视图加载的用户信息,并更新侧导航。

有可能吗?


共有3个答案

百里丁雨
2023-03-14

我创建了一个dart文件,我称之为我的全局文件。dart,在这里我可以定义全局变量

像这样:

library globals;

int globalInt = 0;
bool globalBoolean = true;
String globalString = "";
double globalDouble= 10.0;

这是整个飞镖文件。

然后,在同一个目录或文件夹中,我可以创建其他类,在这些类中,我可以通过导入全局文件来访问全局文件。像地球人一样飞镖。让我们创建一个扩展StatefulWidget的类。在这里,我们将通过按下扁平按钮来更改名为globalInt的全局变量的值。

import 'package:flutter/material.dart';
import 'my-globals.dart' as globals;

class OtherClass extends StatefulWidget {
  OtherClass({Key key}) : super(key: key);

  @override
  _OtherClassState createState() => _OtherClassState();
}

class _OtherClassState extends State<OtherClass> {
  @override
  Widget build(BuildContext context) {
    return Container(
       child: FlatButton(
         color: Colors.blue,
         textColor: Colors.white,
         onPressed: () {
            setState(() {globals.globalInt++;});
            print(globals.globalInt);
         },
       ),
    );
  }
}

你看。我刚刚通过编写全局来访问我想要的变量。然后是库中包含的变量的名称。

希望这个例子有助于更好地理解如何使用globals库。

龚俊捷
2023-03-14

你可以创建一个类

我的颜色。飞奔

class AppColors {

  static var primary = Colors.blue;
}

导入你的课程

import 'package:myapp/.../myColors.dart';

并使用AppColors进行访问。主要

叶福
2023-03-14

只需创建一个库文件,并为您需要的全局文件创建字段。在需要访问这些字段的任何地方导入此库。

应用程序。飞奔

import 'globals.dart' as globals;

main() {
  globals.isLoggedIn = true;
}

组成部分1。飞奔

import 'globals.dart' as globals;

class MyComponent {
  view() {
    if(globals.isLoggedIn) {
      doSomething();
    else {
      doSomethingElse();
    }
  }
}

环球。飞奔

library my_prj.globals;

bool isLoggedIn = false;

你也可以

  • 在globals库中创建单例(有关更多详细信息,请参见如何在Dart中构建单例)
  • 使用observable获得有关更改的通知(有关更多详细信息,请参阅在Dart中实现观察者模式,如何在类中触发一种onChange事件)
 类似资料:
  • 本文向大家介绍Lua中的全局变量、非全局变量总结,包括了Lua中的全局变量、非全局变量总结的使用技巧和注意事项,需要的朋友参考一下 前言 Lua将其所有的全局变量保存在一个常规的table中,这个table称为“环境”。这种组织结构的优点在于,其一,不需要再为全局变量创造一种新的数据结构,因此简化了Lua的内部实现;另一个优点是,可以像其他table一样操作这个table。为了便于实施这种操作,L

  • 问题内容: 如何在Java中定义全局变量? 问题答案: 要定义全局变量,你可以使用静态关键字 现在你可以通过调用从任何地方访问a和b

  • 我想使用大小为2的FIFO队列来存储数据流的元素。在任何情况下,我都需要流中的前一个元素,而不是当前元素。为此,我在流代码之外创建了一个队列,并将当前元素加入队列。当我的队列有两个元素时,我将其出列并使用第一个元素。 我面临的问题是,我不能加入队列,因为它是在我的流代码之外声明的。我想这是因为流使用多个JVM,我的队列将在一个JVM中声明。 下面是一个示例代码: 在这里,没有任何东西进入队列,队列

  • 问题内容: 假设我想创建一个sql脚本并执行以下操作: 我不能,因为@SomeVariable与他所属的批次一起死亡,而myProcedure需要它自己的批次。显然,我可以创建一个#temp表并在其中填充所需的任何值,但随后我必须从中选择- 添加代码,尽管琐碎,但会损害可读性,并且当我需要的只是一个全局变量时似乎很愚蠢。有没有更好的办法? 要痛苦地清除。我知道SQL Server具有称为“表”的“

  • 问题内容: 我在控制器的作用域上初始化变量时遇到问题。然后,当用户登录时,它将在另一个控制器中进行更改。此变量用于控制诸如导航栏之类的操作,并根据用户的类型来限制对网站某些部分的访问,因此保持其值很重要。它的问题是初始化它的控制器,再次通过某种方式被调用,然后将变量重置为其初始值。 我认为这不是声明和初始化全局变量的正确方法,也不是真正的全局变量,所以我的问题是什么是正确的方法,并且在使用当前版本