我正在尝试Flutter/Dart的事情.但是当从另一个类访问时,我的静态变量不断重新初始化.
我有一个类,在其单独的dart源文件中,保存服务器状态,声明如下:
class ServerStatus{
static int newestBinary;
static bool serverUp;
}
Run Code Online (Sandbox Code Playgroud)
我把它们初始化为@ main()by
ServerStatus.newestBinary = 20;
ServerStatus.serverUp = true;
Run Code Online (Sandbox Code Playgroud)
.之后,当我尝试在我的应用程序中的另一个页面上访问它们时,变量' newestBinary'和' serverUp'都变成了null,就好像它们被重新启动一样.(如果我宣布他们喜欢static int newestBinary = 10;,然后重新分配ServerStatus.newestBinary = 20;的main(),它仍然会显示为10,在我的应用程序的另一页.
我的应用程序没有在两个操作之间退出或停止.在什么情况下,静态变量会被重新激活?
如果我必须为应用程序保存全局和常用信息,那么除了使用静态变量之外,最好的方法是什么呢?
提前致谢.
我想在Dart中实现一个观察者模式,但我不确定如何去做.
假设我有一节课:
class MyClass {
String observed_field;
}
Run Code Online (Sandbox Code Playgroud)
现在,每当我更改字段时,我都想将"observe_field changed"字符串打印到控制台中.使用自定义setter非常简单:
class MyClass {
String _observed_field;
get observed_field => _observed_field;
set observed_field(v) {
_observed_field = v;
print("observed_field changed");
}
}
Run Code Online (Sandbox Code Playgroud)
当然,现在,如果我没有一个,但很多这些领域,我不想创建所有那些getter和setter.明显的理论解决方案是将它们动态地添加到类中(不是工作代码,只是我希望它看起来的一个示例):
class MyClass
String _observeable_field;
String _observeable_field_2;
observe(#observeable_field, #observeable_field_2);
end
Run Code Online (Sandbox Code Playgroud)
它甚至可能吗?另外,如果没有在observe()调用之上定义那些字段,那将是非常棒的,而是写下这样的内容:
observe(String: #_observeable_field, String: #_observeable_field_2);
Run Code Online (Sandbox Code Playgroud)
这样就可以自动声明这些字段.
我能够成功 - 使用 Google 和 Facebook 使用 firebase 登录用户:
firebase_auth.dart、flutter_facebook_login.dart、google_sign_in.dart
我可以从不同的小部件使用此功能注销 firebase 用户:
Future<void>_signOut() async {
final FirebaseAuth _firebaseAuth = FirebaseAuth.instance;
return _firebaseAuth.signOut();
}
Run Code Online (Sandbox Code Playgroud)
现在这是 Google 和 Facebook 两种登录类型的统称,我如何确定用户是否是 Google auth 用户,在这种情况下我可以执行
final GoogleSignIn _googleSignIn = new GoogleSignIn();
...
_googleSignIn.signOut();
Run Code Online (Sandbox Code Playgroud)
此外,如果我的注销功能在不同的小部件和文件中,我如何传递要引用的 GoogleSignIn 对象以注销?
登录后我从 URL 收到响应,但我只能在控制台中打印数据,但如何从该响应中获取邮件和姓名
我已经尝试过未来的响应,但是当我收到未来的响应但它返回错误时
登录页面.dart
import 'dart:io';
import 'package:cookie_jar/cookie_jar.dart';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:path_provider/path_provider.dart';
import 'globals.dart' as globals;
class LoginPage extends StatefulWidget {
static String tag = 'login-page';
@override
_LoginPageState createState() => new _LoginPageState();
}
class _LoginPageState extends State<LoginPage> {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
LoginRequestData _loginData = LoginRequestData();
bool _validate = false;
bool _obscureText = true;
var username, password;
@override
Widget build(BuildContext context) {
return Scaffold(
// backgroundColor: Colors.white,
body: SingleChildScrollView(
child: Container(
color: Colors.lightGreen[500],
child: …Run Code Online (Sandbox Code Playgroud) 我正在将java脚本移动到dart,在java脚本中我创建了动态变量
window["text" + pageNumber] = 123;
alert(window["text" + pageNumber]);
Run Code Online (Sandbox Code Playgroud)
我怎么能用飞镖做到这一点?
我在 Stepper 的每个步骤中都有多个表单,表单在外部文件中,因为在我的应用程序中,每个步骤都可以包含一个不同的表单。我希望当用户单击“继续”时,表单将被验证,并且在错误情况下用户将收到警告。我尝试使用 Inherited Widget 但它给了我一个“getter null”。下面的代码:包含步骤的屏幕
import 'package:flutter/material.dart';
import 'package:pberrycoffeemaker/widgets/function_appbar.dart';
import 'package:pberrycoffeemaker/widgets/inputs_0.dart';
import 'package:pberrycoffeemaker/widgets/stepper_banner.dart';
class FunctionScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
int indexStep = 0;
double bottomHeight = (MediaQuery.of(context).size.height * 40) / 100;
double cardHeight = (MediaQuery.of(context).size.height * 60) / 100;
double cardWidth = (MediaQuery.of(context).size.width * 85) / 100;
FirstTypeInput firstTypeOfInput = FirstTypeInput();
GlobalKey<FormState> key = new GlobalKey<FormState>();
return Scaffold(
body: Stack(
children: <Widget>[
AppbarBack(
height: bottomHeight,
),
Align(
alignment: Alignment(0.0, .65),
child: ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(15.0)), …Run Code Online (Sandbox Code Playgroud) 我正在学习 Flutter 的计算功能。我的理解是,它是为了将计算量大的工作卸载到另一个线程,以免阻塞 UI 线程。我遇到了一些我不太理解的行为。考虑下面的应用程序。
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
void main() => runApp(new MyApp());
class StringValues {
static String foo = 'Foo';
static String bar;
}
String _calculate(String value) {
return value + ' ' + (StringValues.foo ?? 'undefined') + ' ' + (StringValues.bar ?? 'undefined');
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new MyHomePage(title: 'Flutter Demo Home Page'),
);
} …Run Code Online (Sandbox Code Playgroud) 我尝试在 dart 中构建一个应用程序。我在另外两个中注入了一个服务类来共享一些数据。现在的问题是,我不知道如何通过另一个类属性更改(异步)触发一个类中的事件(onChange)。
我需要存储一些应在我的应用程序中到处可用的数据。到目前为止,我知道执行此操作的三种方法:
我想知道哪种解决方案(或我不知道的另一种解决方案)在性能方面最容易实现。