小编Rém*_*let的帖子

用百分比在堆栈中定位小部件

假设我想在 a 内放置一个小部件,Stack但使用堆栈位置的百分比而不是固定大小。如何在颤振中做到这一点?

我希望Positionned.fromRelativeRect构造函数就是这样,使用介于 0 和 1 之间的浮点数。但似乎没有。

Align允许以百分比定位小部件。但是heightFactorwidthFactor更改Align大小而不是子大小。这不是我想要的。

dart flutter

9
推荐指数
3
解决办法
5110
查看次数

飞镖的最大/最小整数/双精度值是否有常数?

飞镖中是否有一个常数告诉我们最大/最小整数/双精度值是多少?

有点像,double.infinity但是double.maxValue呢?

dart

7
推荐指数
5
解决办法
2207
查看次数

如何获得泛型类型?

我想获得Type一个泛型类.理想情况下,我想要以下内容:

Type type = MyClass<int>;
Run Code Online (Sandbox Code Playgroud)

但这会引发语法错误.获取此类型信息的正确方法是什么?

我知道我可以runtimeType像这样使用这种类型:

final foo = MyClass<int>();
Type type = foo.runtimeType;
Run Code Online (Sandbox Code Playgroud)

但这需要一个对象的实例; 这不适合我的用例.

dart flutter

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

为什么 AnimationController 需要 vsync?

使用AnimationController 时,该vsync参数的用途是什么?

class Example extends StatefulWidget {
  @override
  _ExampleState createState() => _ExampleState();
}

class _ExampleState extends State<Example> with SingleTickerProviderStateMixin {
  AnimationController controller;

  @override
  void initState() {
    super.initState();
    controller = AnimationController(
      duration: const Duration(seconds: 2),
      vsync: this, // Why do we need this?
    );
  }

  // ...
}
Run Code Online (Sandbox Code Playgroud)

animation flutter

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

输入重载函数的类型推断

考虑以下重载函数:

function foo(arg1: string, cb: (err: Error|null, res: string) => void): void
function foo(arg1: string, arg2: string, cb: (err: Error|null, res: string) => void): void
Run Code Online (Sandbox Code Playgroud)

我想promisify使用这些功能.但默认实现返回无效类型.

当它回来

(arg1: string, arg2: string) => Promise<{}>
Run Code Online (Sandbox Code Playgroud)

我希望它会回归

{
   (arg1: string): Promise<string>;
   (arg1: string, arg2: string): Promise<string>;
}
Run Code Online (Sandbox Code Playgroud)

考虑到这一点,我想解决这些问题.我设法使用以下内容覆盖该特定原型:

export type Callback<T> = (err: Error | null, reply: T) => void;
export type Promisify<T> =

    T extends {
        (arg1: infer T1, cb?:  Callback<infer U>): void;
        (arg1: infer P1, arg2: infer P2, cb?: …
Run Code Online (Sandbox Code Playgroud)

typescript

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

如何在Flutter中测试/调试树抖动?

Flutter附带了摇树汇编。仅包括使用的代码。

但这很容易在无意中被破坏。

有什么方法可以测试和调试树震动?

dart flutter

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

在抖动中预加载图像资产

我正在建立一个扑朔迷离的游戏。我有大约130-150mo的图片。而且其中一些必须预先加载,否则用户体验会不流畅。

我自己发现了一种预加载图像的方法:

final asset = new ExactAssetImage(assetPath);
final stream = asset.resolve(createLocalImageConfiguration(context));
Run Code Online (Sandbox Code Playgroud)

虽然这样做有效,但存在一个巨大的缺点:内存成本大约是实际图像大小的6倍。

结果呢?我的应用程序仅通过加载图像就消耗了800 MO的内存,这太疯狂了(特别是考虑到它是一个相对简单的应用程序)。实际上,公羊的消耗是如此之大,以至于我丢失了很多框架。

简而言之:预加载图像的最理想方法是什么?有什么我想念的吗?

memory-leaks dart flutter

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

如何使用与 T 不同类型的 Proxy&lt;T&gt; 作为参数?

我处于一种情况,我想使用Proxy, 在类列表之间“负载平衡”。

我想做的一个简单的例子如下:

class Foo {
    constructor(private msg: string) {}

    foo() {
        console.log(this.msg);
    }
}

// @ts-ignore
const proxy: Foo = new Proxy([new Foo('foo'), new Foo('bar')], {
    get: (o, key) => {
        const client = o[Math.floor(Math.random() * o.length)];
        console.log(client, key);
        return client[key];
    },
});
proxy.foo();
Run Code Online (Sandbox Code Playgroud)

这“有效”。问题是我正在使用打字稿。而且,由于Proxy类型定义,我们不能做类似的事情

new Proxy<Foo>([new Foo(), new Foo()], handler)
Run Code Online (Sandbox Code Playgroud)

因为它会产生以下错误:

“Foo[]”类型的参数不可分配给“Foo”类型的参数。

有没有办法实现这一点;不丢失类型检查?

javascript typescript ecmascript-6

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

避免在BLoC和RxDart中重复

希望我能说清楚。

在观看视频和教程之后,我发现这种方式使一些小部件可以将数据输入到块(valueSetting)中,而另一些小部件可以将数据输入(值)中。

我要问的是,是否有更好的方法(必须)。我想避免在小部件之间只共享1个实际值的4个变量。

import 'dart:async';

import 'package:rxdart/subjects.dart';

class BlocExample {
  final _valueSettingController = StreamController<bool>();

  // object use by widget to push data
  Sink<bool> get valueSetting => _valueSettingController.sink;

  final _value = BehaviorSubject<bool>(seedValue: false);

  // object used by widget to get data
  Stream<bool> get value => _value.stream;

  BlocExample() {
    _valueSettingController.stream.listen(_value.add);
  }

  void dispose() {
    _value.close();
    _valueSettingController.close();
  }
}
Run Code Online (Sandbox Code Playgroud)

dart flutter

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

flutter中的initState和super.initState是什么?

在文档中是书面的,但我听不懂。

当此对象插入树中时调用。

框架将为它创建的每个State对象仅一次调用此方法。

重写此方法以执行初始化,具体取决于将此对象插入树中的位置(即上下文)或用于配置此对象的小部件(即小部件)。

如果State的构建方法依赖于本身可以更改状态的对象(例如ChangeNotifier或Stream)或可以订阅以接收通知的其他对象,则State应该在initState期间订阅该对象,并从旧的状态中取消订阅对象,并在didUpdateWidget中更改时订阅新对象,然后在处置中取消订阅该对象。

您不能通过此方法使用BuildContext.inheritFromWidgetOfExactType。但是,didChangeDependencies将在此方法之后立即调用,并且可以在此处使用BuildContext.inheritFromWidgetOfExactType。

如果重写此方法,请确保您的方法始于对super.initState()的调用。

但是我不确定它的含义。你能解释一下吗?

flutter

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