小编Aur*_*tas的帖子

Flutter FutureBuilder 不断被调用

我正在经历有趣的行为。我在有状态小部件中有一个 FutureBuilder。如果我单独返回 FutureBuilder,则一切正常。我的 API 只被调用一次。但是,如果我添加额外的逻辑,并在两个小部件之间做出选择 - 我可以在 chrome 中看到我的 API 被调用了数十次。我知道这个build方法会随时执行,但是这个额外的逻辑是如何完全破坏 Future 的行为的呢?

这是调用一次 api 的示例。

@override
  Widget build(BuildContext context) {
    return FutureBuilder(..);
}
Run Code Online (Sandbox Code Playgroud)

这是 api 被多次调用的示例 if someBooleanFlagis false

@override
  Widget build(BuildContext context) {
    if(someBooleanFlag){
      return Text('Hello World');
    }
    else{
    return FutureBuilder(..);
}
Run Code Online (Sandbox Code Playgroud)

谢谢

api dart flutter

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

onGenerateRoute 被多次调用

在我的主要方法中,我有

onGenerateRoute: (route) {
        print(route);
        return Router.generateRoute(route);
      }
Run Code Online (Sandbox Code Playgroud)

如果我输入 URL,https://myurl.com/#/foo/bar我可以看到多次调用打印。

/
Run Code Online (Sandbox Code Playgroud)
/foo
Run Code Online (Sandbox Code Playgroud)
/foo/bar
Run Code Online (Sandbox Code Playgroud)

我有一个问题,因为我想输入bar路径,但它被输入了foo

任何想法我应该如何进行?

routes flutter

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

TypeScript 与 Jest 无法检测到库

Jest 似乎无法获取导入的库。我一直在阅读相关内容并尝试各种选择。其中之一就是这个。然而它们似乎都不起作用。

\n
//xyz.ts\n\n..\n/* eslint-disable */\nimport * as csv from \'csv-stringify/sync\';\n/* eslint-enable */\n..\n
Run Code Online (Sandbox Code Playgroud)\n

运行 Jest 后:

\n
Test suite failed to run\n\n    Cannot find module \'csv-stringify/sync\' from \'xyz.ts\'\n
Run Code Online (Sandbox Code Playgroud)\n

正在使用的库 - https://csv.js.org/stringify/

\n

我怀疑我做错了什么,因为如果我不禁用它的检查,即使 ESLint 也会抱怨这一点。

\n
 Unable to resolve path to module \'csv-stringify/sync\'  import/no-unresolved\n
Run Code Online (Sandbox Code Playgroud)\n

图书馆的结构:

\n

csv-stringify 包

\n

此外,如果我尝试导入为

\n
import * as csv from \'csv-stringify/lib/sync\';\n
Run Code Online (Sandbox Code Playgroud)\n

然后我在运行 Jest 后收到此错误

\n
Test suite failed to run\n\n    Jest encountered an unexpected token\n\n    Jest failed to parse …
Run Code Online (Sandbox Code Playgroud)

csv typescript ts-jest

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

Display selected image in Flutter Web

Since flutter web is in tech preview, none of the plugins are working.

I have a task to show image, which we select. I have following picker

_startFilePicker() async {
InputElement uploadInput = FileUploadInputElement();
uploadInput.multiple = true;
uploadInput.click();

uploadInput.onChange.listen((e) {
  // read file content as dataURL
  final files = uploadInput.files;
  if (files.length == 1) {
    final file = files[0];
    final reader = FileReader();

    reader.onLoadEnd.listen((e) {
      _handleResult(reader.result);
          });
          reader.readAsDataUrl(file);
        }
      });
      }

        void _handleResult(Object result) {
          setState(() {
            images.add(result);
          });
        } …
Run Code Online (Sandbox Code Playgroud)

image file show flutter-web

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

Docker + Google Cloud + chromedriver -> 可执行文件需要在 PATH 中

我已经度过了最后两天,我正在失去我的头发。我在我的 Google Cloud 机器上运行 ubuntu。我的 Dockerfile 看起来像这样


# Project files
ARG PROJECT_DIR=/srv/api
RUN mkdir -p $PROJECT_DIR
WORKDIR $PROJECT_DIR

# Install Python dependencies
COPY ./ ./
RUN mv /srv/api/app/chromedriver_linux /usr/bin/chromedriver_linux
RUN ls /usr/bin/
Run Code Online (Sandbox Code Playgroud)

我写 ls 来检查 chromedriver_linux 是否存在于我的路径中。它确实存在于/usr/bin/chromedriver_linux

然后在我的代码中指定

chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--disable_infobars')
    chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
    driver = webdriver.Chrome('/usr/bin/chromedriver_linux', options=chrome_options)
Run Code Online (Sandbox Code Playgroud)

我收到

selenium.common.exceptions.WebDriverException: Message: 'chromedriver_linux' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home

有趣的是,如果我在本地机器上运行 Docker 并为 mac 指定 chromedriver - 它可以工作。我无法弄清楚 - 为什么它可以在本地机器上运行但不能在云上运行。

期待听到你的声音,聪明的人,我在这里错过了什么!

python selenium-chromedriver docker google-cloud-platform dockerfile

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

无法在 Android Studio 中为 Flutter 选择 iOS Phone Simulator

我有一个问题。我开始在 Android Studio 中编码,我想选择 iOS Simulator。但是,我只能选择Open iOS Simulator打开的选项..手表!

我如何将手机作为模拟器启动?

我尝试进入模拟器本身,但找不到任何方法来做到这一点。

simulator watch ios android-studio flutter

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