小编Phi*_*aro的帖子

如何在 Dart 中创建 Web 组件

1. 背景

\n

在 vanilla JS 中可以通过以下方式创建 Web 组件:

\n
    \n
  1. 创建一个类extends HTMLElement
  2. \n
  3. 然后注册它:\n
    window.customElements.define(\'app-drawer\', AppDrawer);\n
    Run Code Online (Sandbox Code Playgroud)\n
  4. \n
\n

由于我在 Dart 中有很多代码,我想我可以用它来做到这一点。但我遇到了一些障碍。主要是已被弃用且似乎不起作用的事实document.registerElement()window.customElements.define()

\n
\n

I mostly use Microsoft Edge as a browser. But it uses Chromium anyway. And I\'ve also tested everything mentioned below on Chrome as well.

\n
\n

2. What I\'ve Tried

\n

2.1. G\xc3\xbcnter\'s Answer with document.registerElement()

\n

G\xc3\xbcnter\'s answer points to this dartpad, which uses the document.registerElement() …

html javascript dart angular-dart

7
推荐指数
0
解决办法
1677
查看次数

颤振 - 跨度不能为零长度

我正在开发一个 Flutter 应用程序,它使用 Textfield.

我声明TextField如下:

new TextField(
  controller : _controller,
  decoration : new InputDecoration(
      hintText: 'Message...'
  )
)
Run Code Online (Sandbox Code Playgroud)

TextField显示在我的窗口小部件,但是当我在上面敲击时,键盘会自动关闭,以下错误出现在控制台

E/SpannableStringBuilder(17860): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
Run Code Online (Sandbox Code Playgroud)

我在 Android(三星 Galaxy Grand Prime,Android 5.1)上使用 IntelliJ 中的 Flutter 插件运行它。

我怎么能解决这个问题?

编辑:正如在这个答案中看到的(Android - SPAN_EXCLUSIVE_EXCLUSIVE 跨度不能为零长度),我试过切换键盘(谷歌和三星),仍然相同

android spannablestring flutter

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

如何获得 Angular Dart 的代码覆盖率?

我尝试使用 packagecoverage从我的 Angular Dart 4.0 项目中获取代码覆盖率。

以下步骤是我的工作流程:

  1. pub serve test --port=8081
  2. pub run test --pub-serve=8081 --pause-after-load
  3. 等待测试运行器打印天文台 URL(例如http://127.0.0.1:12345
  4. pub global run coverage:collect_coverage --port=12345 -o coverage.json
  5. 按 Enter 恢复测试运行程序
  6. pub global run coverage:format_coverage --packages=.packages-c -i coverage.json -o coverage.report

在第5步之后,我会得到一个coverage.json包含一些数据的文件,但我不知道为什么覆盖率报告总是显示每个代码都没有覆盖。

我是否使用错误的流程来获取代码覆盖率?或者有什么更好的方法来做到这一点?

谢谢 !


有我的实验代码:

experiment_component.dart

import 'package:angular/angular.dart';

@Component(
  selector: 'experiment_component',
  template: '<h1>{{greeting}}</h1>'
)
class ExperimentComponent {

  String greeting = '';

  void greet() {
    greeting = 'Hello';
  }

}
Run Code Online (Sandbox Code Playgroud)

experiment_component_test.dart

@TestOn('browser') …
Run Code Online (Sandbox Code Playgroud)

testing code-coverage dart angular-dart

6
推荐指数
0
解决办法
144
查看次数

如何更改 Flutter 中 `BottomNavigationBar()` 中项目之间的间距?

1.我希望我能做什么

到目前为止,我的BottomNavigationBar看起来还不错(而且很简单),但是,考虑到我里面只有 2 个项目,我想让它们靠近一点(也许在右边),这样它们更容易到达。我怎么做?是否有房产可以完成这项工作?也许在BottomNavigationBar主题里面?

2. 一个片段

这是现在的样子:

bottomNavigationBar: BottomNavigationBar(
  items: <BottomNavigationBarItem>[
    BottomNavigationBarItem(
      icon: Icon(Icons.account_circle),
      title: Text('Personal Data'),
    ),
    BottomNavigationBarItem(
      icon: Icon(Icons.payment),
      title: Text('Contracts'),
    ),
  ],
  currentIndex: _selectedIndex,
  selectedItemColor: Colors.orange,
  onTap: _onItemTapped,
),
Run Code Online (Sandbox Code Playgroud)

dart flutter bottomnavigationview

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

如何在浏览器扩展上下文中通过 TypeScript 访问全局变量(如果可能的话,部分键入)

1. 问题

\n

我正在尝试通过 TypeScript 从网站 \xe2\x80\x94随机 OGS 示例\xe2\x80\x94 访问全局变量,以便从当前棋盘游戏获取数据。

\n

我对 TS 还很陌生,所以我也不确定如何输入这个变量。全局变量本身实际上最初是在 TS 中创建的,但它具有无数的方法和属性,因为有如此多的功能。因此,如果我要自己输入它,我宁愿只输入我需要的内容(如果可能的话),或者以某种方式从某个包中导入它 \xe2\x80\x94 我不认为作者已在任何地方公开发表。

\n

与此同时,还有一个问题是全局变量是否默认可用于浏览器扩展,但情况可能并非如此

\n

2.我一直在尝试的

\n

所以,我一直在尝试(我已经尝试了一百万种其他变体......)做的是类似 * \xe2\x80\x94 inside 的事情content.ts,它在OGS域 \xe2\x80\内部运行x94:

\n
interface Goban {\n  bounded_height: number;\n}\n\ndeclare var goban: Goban;\n\ngoban = window["global_goban"];\n\nconsole.log(goban.bounded_height.toString());\n
Run Code Online (Sandbox Code Playgroud)\n

我通常得到的错误是:

\n
Uncaught ReferenceError: goban is not defined\n
Run Code Online (Sandbox Code Playgroud)\n

那么我错过了什么?我必须创建声明文件 ( .d.ts) 吗?处理这种从第三方代码导入全局变量的正确方法是什么?

\n

*:根据您尝试处理对象的方式window,您可能必须添加"suppressImplicitAnyIndexErrors": true到您的对象中tsconfig.json,以便 TS 不会静态地抱怨。

\n

3. 如何完全重现我的问题

\n …

javascript browser-extension typescript

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

/usr/bin/env: 'bash\r': 没有那个文件或目录

在 win10 的 Linux 终端中设置 docker 后我遇到了问题。当我尝试构建时,它显示以下错误。

/usr/bin/env: ‘bash\r’: No such file or directory
ERROR: Service 'magento2' failed to build: The command '/bin/sh -c /opt/docker/bin/service.d/autosync.sh install     && docker-service-enable autosync' returned a non-zero code: 127
Run Code Online (Sandbox Code Playgroud)

它是 git line 结束错误,我该如何解决?

git newline core.autocrlf docker windows-subsystem-for-linux

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

无法安装express,因为npm installexpress错误

我在尝试安装时收到以下错误express

  1. npm ERR! code ERR_OSSL_PEM_NO_START_LINE
  2. npm ERR! errno ERR_OSSL_PEM_NO_START_LINE
  3. npm ERR! request to https://registry.npmjs.org/express failed, reason: error:0909006C:PEM routines:get_name:no start line

npm express npm-install

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

如何在 Flutter 中的文本(表单)字段中从“FocusNode”中移除焦点

在 a 中TextFormField,您可以使用 来请求焦点FocusScope.of(context).requestFocus(_focusNode)。然而,如何确保同一个焦点节点一直处于未聚焦状态呢?

例如,在我的工作流程中,我希望hintText最初为 X,聚焦时为 Y,未聚焦时返回 X。但是,如果我使用如下所示的常用内容,我将无法返回到 X。

class TextFormFieldErrorOnLabel extends StatefulWidget {
  final String hintText;
  final String hintTextOnFocus;

  const NewTextFormField({
    this.hintText,
    this.hintTextOnFocus,
  }) : super(key: key);

  @override
  _NewTextFormFieldState createState() => _NewTextFormFieldState();
}

class _NewTextFormFieldState {
  final FocusNode _focusNode = FocusNode();

  void _requestFocus() {
    setState(() {
      FocusScope.of(context).requestFocus(_focusNode);
    });
  }

  @override
  Widget build(BuildContext context) {
    return TextFormField(
      onTap: _requestFocus,
      focusNode: _focusNode,
      decoration: InputDecoration(
        hintText: _focusNode.hasFocus ? widget.hintTextOnFocus : widget.hintText,
      )
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

requestUnfocus …

textfield dart flutter

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

Dart/Flutter 的代码覆盖率可视化(特别适用于 Windows 和 VS Code)

这最初是Dart-Code 存储库中Github 问题

1. 背景

我一直在研究一个包含数百个测试的包,因此一种可视化代码覆盖率的简单方法将非常方便。

我想运行我的测试,比如说,一个.vscode带有lcov.info输出的配置,它会被 VS Code 自动识别,并在相应的编辑器上用红色或绿色突出显示。

2. 我已经尝试过的

在过去的几天里,我尝试了许多不同的解决方案——实际上是几个月——但没有一个像上面描述的那样理想:

  • flutter test --coverage --coverage-path=lcov.info确实可以生成必要的文件,但是必须通过 3rd 方程序(例如 )将其可视化很笨拙,genhtml如果您使用的是 Windows,则更是如此。
    • 并且它最终确实需要 Flutter,如果您正在使用纯 Dart,这应该不是必需的......
  • IntelliJ 应该可以理想地工作,但我似乎无法启用我的Run with Coverage按钮,即使在安装test_coverage软件包之后也是如此。
    • 尽管 Gitter 上的一个人告诉我他在他的 IntelliJ 上工作。
  • 无论是coveragetest_coverage封装提供了接近什么上述我,但他们的解决方案是这样笨重-和Windows上,他们是很难成立...
  • codecov.io是第 3 方的替代方案,但是当编辑器提供更灵活和更快的体验时,不得不在外部处理这个问题很烦人。
    • 而且还有覆盖不明确的问题,关于codecov.io 不清楚。例如,如果一个文件夹测试间接调用另一个文件夹的内容,这是否也算作间接调用文件夹的覆盖率?这几乎总是不可取的。

3. 其他资源

  1. StackOverflow 上这个老问题最初很有帮助。

code-coverage command-line-interface dart visual-studio-code flutter

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

使用 React 在 HTML Canvas 中打字时将文本调整为圆形(通过缩放)

我试图在打字时让文本适合一个圆圈,如下所示:

示例图 1

我尝试遵循Mike Bostock 的将文本调整为圆形教程,但到目前为止失败了,这是我可怜的尝试:

import React, { useEffect, useRef, useState } from "react";

export const TwoPI = 2 * Math.PI;

export function setupGridWidthHeightAndScale(
  width: number,
  height: number,
  canvas: HTMLCanvasElement
) {
  canvas.style.width = width + "px";
  canvas.style.height = height + "px";

  // Otherwise we get blurry lines
  // Referenece: [Stack Overflow - Canvas drawings, like lines, are blurry](/sf/answers/4140044961/)
  const scale = window.devicePixelRatio;

  canvas.width = width * scale;
  canvas.height = height * scale;

  const canvasCtx = canvas.getContext("2d")!; …
Run Code Online (Sandbox Code Playgroud)

html javascript svg html5-canvas reactjs

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