【问题标题】:Dart 2.18: StreamTransformer for InputElement FieldDart 2.18:InputElement 字段的 StreamTransformer
【发布时间】:2022-10-12 22:08:04
【问题描述】:

我正在尝试使用Dart 2.18.2StreamTransformer 应用于InputElement 字段。我遇到以下错误:

变压器错误:

Line 18: The argument type 'StreamTransformer<Object?, Object?>' can't be assigned to the parameter type 'StreamTransformer<String?, dynamic>'.

空安全错误:

Line 8: The method 'contains' can't be unconditionally invoked because the receiver can be 'null'.

我的 HTML

<h4>Email address:</h4>
<input />
<div style="color: red"></div>

我的飞镖代码:

import 'dart:html';
import 'dart:async';
void main() {
  final InputElement input = querySelector('input') as InputElement;
  final DivElement div = querySelector('div') as DivElement;
  final transformer = StreamTransformer.fromHandlers(
    handleData: (value, sink) {
      if(value.contains('@')) {
        sink.add('valid email');
      } else {
        sink.addError('Invalid');
      }
    }
  );
  
  input.onInput
    .map( (event) => (event.target as InputElement).value)
    .transform(transformer)
    .listen(
    (value) => print('Email corrected!'),
    onError: (err) => print(err),
  );
}

我的带有行号的代码:

有人可以指出我缺少什么吗?谢谢!

【问题讨论】:

    标签: flutter dart dart-null-safety


    【解决方案1】:

    我需要在handleData 中添加String 以告诉Transformer String 数据将被传输,因此,添加这个解决了错误。

    final transformer = StreamTransformer.fromHandlers(
        handleData: (String? value, sink) {
          if(value!.contains('@')) {
            sink.add('valid email');
          } else {
            sink.addError('Invalid');
          }
        }
      );
    

    笔记:我很高兴看到任何更好的自动检测类型等的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-02
      • 2019-04-21
      • 2015-05-27
      • 1970-01-01
      • 1970-01-01
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多