小编Rea*_*nkm的帖子

如何使用Flutter保存到本地存储?

在Android中,如果我有想要在会话中持久保存的信息,我知道我可以使用SharedPreferences或创建SQLite数据库,甚至可以将文件写入设备并在以后阅读.

有没有办法只使用Flutter保存和恢复这样的数据?或者我是否需要为服务示例中的Android和iOS编写特定于设备的代码?

flutter

70
推荐指数
7
解决办法
6万
查看次数

如何在卡片中紧紧包裹小部件列?

我有一个我的应用程序的页面,它只Card包含一个Column结尾的文件MaterialList.即使我的列表只有一个或两个项目,卡片也会将其垂直空间扩展到屏幕底部,而不是停留在列表项目的末尾.该列的文件表明,这是正常的行为列("布局中的每个孩子一零或零弹性系数(例如,那些不展开)与无界垂直约束").我认为将列表包装在一个Flexible可能达到我想要的效果但是当我尝试时我得到以下错误:

RenderFlex children have non-zero flex but incoming height constraints are unbounded.
I/flutter (11469): When a column is in a parent that does not provide a finite height constraint, for example if it is
I/flutter (11469): in a vertical scrollable, it will try to shrink-wrap its children along the vertical axis. Setting a
I/flutter (11469): flex on a child (e.g. using a Flexible) indicates that the child is to expand …
Run Code Online (Sandbox Code Playgroud)

flutter

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

如何使用TextPainter绘制文本?

我可能从根本上误解了它是如何工作的所以请纠正我错误的地方CustomPainter的paint方法文档说:"要在Canvas上绘制文本,使用TextPainter"所以在我的MyCustomPainter的绘制方法中我有以下内容:

TextSpan span = new TextSpan(text: 'Yrfc');
TextPainter tp = new TextPainter(text: span, textAlign: TextAlign.left);
tp.layout();
tp.paint(canvas, new Offset(5.0, 5.0));
Run Code Online (Sandbox Code Playgroud)

我尝试了各种偏移,(Offset.zero, Offset.infinite, new Offset(10.0, 10.0)但我从来没有能够看到屏幕上画的文字.

dart flutter

13
推荐指数
3
解决办法
5543
查看次数

如何设置LinearProgressIndicator的动画颜色?

LinearProgressIndicator文档很有帮助显示valueColor财产的存在,甚至提到"要指定一个固定颜色的使用:新AlwaysStoppedAnimation(颜色)",但如果我尝试设置的颜色我得到LinearProgressIndicator有valueColor没有实例的setter错误并且类的构造函数只接受进度量的键和数值.

如果我想要一个具有自定义颜色的LinearProgressIndicator,我是否需要创建自己的类?真的没有办法指明这个吗?

flutter

12
推荐指数
3
解决办法
5353
查看次数

为什么 Typescript 认为我的枚举未定义?

我正在使用 Typescript、Redux 和 React,所有这些对我来说都是新的,所以这可能有一个我没有看到的简单修复。

我有一个 actions.ts 文件,其中包含一个像这样的枚举:

export enum AnimalTypes {
    CAT = 'CAT',
    DOG = 'DOG'
}
Run Code Online (Sandbox Code Playgroud)

我将它导入到我的 reducers.ts 文件中,并试图在这样的日志语句中使用它:

import {AnimalTypes} from './actions';

export function someFunction() {
    // Print the word "CAT"
    console.log(AnimalTypes[AnimalTypes.CAT]);
}
Run Code Online (Sandbox Code Playgroud)

当我尝试启动我的网站时出现以下错误:

TypeError: Cannot read property 'CAT' of undefined
  at someFunction (reducer.ts:5)
  at combineReducers.js:20
  etc.
Run Code Online (Sandbox Code Playgroud)

我的 IDE 没有给我任何错误,TSLint 也没有。我在网上阅读了一堆试图找到答案的文章,但最接近我的人是在他们的枚举中没有“export”关键字的人,而我有。

这里会发生什么?我会很感激任何帮助。

谢谢你。

编辑:这不是它有问题的反向映射,而是枚举的任何用法。这只是我能想到的最短用法。我实际上是在 switch 语句中使用它:

import {AnimalTypes} from './actions';

export function otherFunction(animal) {
    switch (animal.type) {
        case AnimalTypes.CAT:
            // Do stuff
}
Run Code Online (Sandbox Code Playgroud)

当我构建上述代码时,出现此错误 Uncaught TypeError: Cannot …

enums typescript reactjs redux

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

有没有办法获得现有小部件的大小?

我试图让我的UI显示两个按钮,一个略微重叠另一个,在一个全宽卡的中间.因为Stack只会和它的非定位子项一样宽,所以我添加了一个宽度为double.INIFINITY的SizedBox的非定位子项给自己一个画布来放置按钮,但我不知道放什么作为SizedBox的高度.理想情况下,我希望这个小部件能够适当地调整自己的大小,无论用户是在手机还是平板电脑上,所以我宁愿将SizedBox高度基于按钮的当前大小而不是仅对硬编码.

有没有办法找到给定现有小部件的大小?如果没有,那么确定需要在多种屏幕尺寸上看起来好的物体的高度的方法是什么?

示例代码:

new Card(
  child: new Stack(
    children: <Widget>[
      new SizedBox(
        width: double.INFINITY,
      ),
      new Positioned(
        left: 1.0,
        child: getButtonOne(),
      ),
      new Positioned(
        right: 1.0,
        child: getButtonTwo(),
      ),
    ],
  ),
),
Run Code Online (Sandbox Code Playgroud)

flutter

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

为什么这个图标被剪掉了?

在此处输入图片说明

如您所见,右侧的人脸图标被剪掉了,我不知道为什么。

这是我的代码:

new Container(
  padding: new EdgeInsets.fromLTRB(style.wideMargin, style.wideMargin * 2,
      style.wideMargin, style.wideMargin),
  decoration: new BoxDecoration(backgroundColor: Colors.white),
  child: new Row(
    crossAxisAlignment: CrossAxisAlignment.end,
    children: [
      new Expanded(
        child: new Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            new PrecisionTextOverflow(
                'Name of a thing',
                lineWidth: style.longLineWrappingWidth,
                mainTextStyle: style.blackParagraphText),
            // Because PrecisionTextOverflow paints itself directly, the UI
            // doesn't know its size so we use a blank Text object to make the
            // column center itself correctly.
            new Text(' '),
          ],
        ),
      ),
      new Transform(
        transform:
            new …
Run Code Online (Sandbox Code Playgroud)

flutter

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

PathProvider 文档目录是安全位置吗?

任何人都可以确认Flutter 的文档目录文件存储方法是否安全,或者 AppData 目录是否是 Android 存储其内部存储文件的位置/方式?

我正在考虑在设备上存储一些持久的本地数据,但我想确保我编写的数据不是纯文本或可供任何人/任何其他人访问。如果这是一个常规的 Android 应用程序,我会使用 Android 的内部存储,它表示存储的数据是“您的应用程序私有的,其他应用程序无法访问它们(用户也不能)。当用户卸载您的应用程序时,这些文件将被删除”。

Flutter 有自己的与平台无关的方式来读取和写入文件,其文档称将内容保存到其文档目录会存储“只有它可以访问的文件”。系统仅在删除应用程序时清除该目录。在 iOS 上,这对应于 NSDocumentsDirectory .在 Android 上,这是 AppData 目录。”

看起来这些都在谈论同一件事,因此符合我的安全标准,但这些是我不太熟悉的事情,我不想冒用户数据的风险。我尝试在 Google 上搜索 Android 上“AppData”目录中保存的内容,但大多数人都在谈论他们的 Android Studio 安装。

security android flutter

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

当点击的小部件启动计时器时,如何运行单元测试?

我有一个小部件,当点击它时,保存一个 ID 号,覆盖一个 CircularProgressIndicator 1000ms,然后弹出进度指示器并将用户路由到另一个页面。

这个带有 ProgressIndicator 和 Timer 的位是新的,它破坏了我的单元测试,现在给了我以下错误:

The following assertion was thrown running a test:
'package:flutter_test/src/binding.dart': Failed assertion: line 574 pos 12: '() {
      'A Timer is still pending even after the widget tree was disposed.';
      return _fakeAsync.nonPeriodicTimerCount == 0;
    }': is not true.

Either the assertion indicates an error in the framework itself, or we should provide substantially
more information in this error message to help you determine and fix the underlying cause.
In either case, …
Run Code Online (Sandbox Code Playgroud)

unit-testing flutter

5
推荐指数
3
解决办法
3368
查看次数

有没有办法在应用程序被杀死或移动到后台之前调用特定代码?

我想在用户离开应用程序之前将其首选项写入文件,所以我在 Flutter 中寻找一些东西,比如 Android 的 onPause() 或 onStop() 方法。这是特定于平台的东西,以至于我需要为它编写服务并在这些情况下实际使用 Android/iOS 的特定方法,还是有办法只使用 Flutter/Dart 来做到这一点?

flutter

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

在单元测试期间,如何访问StatefulWidget状态的内容?

我有一个StatefulWidget(称为MyWidget),其State(MyWidgetState)具有一个myDatainitState()以下期间初始化的字段:

void initState() {
    super.initState();
    myData = new myData(config.someField.getId());
}
Run Code Online (Sandbox Code Playgroud)

当用户按下按钮时,myData将添加到全局列表中或从全局列表中删除。

我正在尝试编写一个单元测试来测试此行为,但是我不知道如何访问MyWidgetState。我尝试将其包含在setup()中:

widget = MyWidget();
widgetState = widget.createState(); 
widgetState.init();
Run Code Online (Sandbox Code Playgroud)

但是它每次尝试进入initState()时都会崩溃,并抱怨“ someField在null上被调用”。没关系。我可能试图通过这种方式来作弊,我应该使用WidgetBuilder进行一些操作,或者使用MyWidget启动应用程序,然后在正确实例化树后在树中找到MyWidget。

如果做完所有这些,一旦完成,我如何访问该MyWidget的MyWidgetState以获取myData的副本并将其与全局列表进行比较?

flutter

4
推荐指数
3
解决办法
619
查看次数

有没有办法在 Flutter 单元测试中测试 AppLifecycleState 更改?

当应用程序移到后台 (AppLifecycleState.paused) 时,我的应用程序将用户首选项写入本地文件,我想为此行为编写测试。

有没有办法在单元测试中模仿这一点?或者这是需要作为集成测试完成的事情吗?

unit-testing flutter

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

有没有办法控制Text小部件溢出的位置(多少行)?

现在看来,如果我将溢出设置为TextOverflow.ellipsis,它会切断第一行末尾的文本.我希望文本能够包装并填充第二行,但不能再进一步.如果内容超过第二行的长度,那么我希望它显示省略号.

有没有其他方法可以做到这一点?

flutter

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

标签 统计

flutter ×12

unit-testing ×2

android ×1

dart ×1

enums ×1

reactjs ×1

redux ×1

security ×1

typescript ×1