相关疑难解决方法(0)

你如何在Dart中建立一个单身人士?

单例模式确保只创建一个类的一个实例.我如何在Dart中构建它?

singleton dart

140
推荐指数
18
解决办法
5万
查看次数

颤动/飞镖静态变量丢失/不断重新初始化

我正在尝试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,在我的应用程序的另一页.

我的应用程序没有在两个操作之间退出或停止.在什么情况下,静态变量会被重新激活?

如果我必须为应用程序保存全局和常用信息,那么除了使用静态变量之外,最好的方法是什么呢?

提前致谢.

android ios dart flutter

14
推荐指数
5
解决办法
2万
查看次数

在Dart中实现Observer模式

我想在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)

这样就可以自动声明这些字段.

dart

9
推荐指数
1
解决办法
3444
查看次数

如何从 Flutter 注销 Google Auth?

我能够成功 - 使用 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 对象以注销?

dart firebase firebase-authentication flutter

6
推荐指数
1
解决办法
3190
查看次数

如何在flutter中的UserAccountsDrawerHeader中显示用户名和邮件

登录后我从 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)

flutter

5
推荐指数
1
解决办法
9056
查看次数

如何在dart中创建动态变量

我正在将java脚本移动到dart,在java脚本中我创建了动态变量

window["text" + pageNumber] = 123;
alert(window["text" + pageNumber]);
Run Code Online (Sandbox Code Playgroud)

我怎么能用飞镖做到这一点?

dart

4
推荐指数
1
解决办法
2301
查看次数

在 stepper flutter 中管理多个表单(验证)

我在 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)

forms android dart flutter stepper

4
推荐指数
1
解决办法
8675
查看次数

Flutter 的计算函数的上下文/范围是什么

我正在学习 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)

flutter

2
推荐指数
1
解决办法
1235
查看次数

我如何在类中触发一种 onChange 事件

我尝试在 dart 中构建一个应用程序。我在另外两个中注入了一个服务类来共享一些数据。现在的问题是,我不知道如何通过另一个类属性更改(异步)触发一个类中的事件(onChange)。

dart

1
推荐指数
1
解决办法
4299
查看次数

全局变量的最佳实践和性能

我需要存储一些应在我的应用程序中到处可用的数据。到目前为止,我知道执行此操作的三种方法:

我想知道哪种解决方案(或我不知道的另一种解决方案)在性能方面最容易实现。

performance dart flutter

0
推荐指数
1
解决办法
54
查看次数