7

以下のコードは「正しく見えます」、コンパイルされますが実行されず、コンソールメッセージで失敗します。

Dartスクリプトを読み込めませんdart:io
リソースの読み込みに失敗しました

コメントアウトすると#import('dart:io');、間違っていると思いますが、コンパイルエラーが発生しますが、ボタンを押すまで起動せず、ランタイムエラーが発生しますか?

内部エラー:'http://127.0.0.1:3030/home/david/dart/samples/htmlIO/htmlIO.dart':エラー:行13 pos 26:タイプ'HttpClient'がロードされていません
varconnection = new HttpClient() .get('www.google.com'、80、'/');

...これは予想されます。

だから私の質問は:dart:htmlとdart:ioを同じクラスにインポートするにはどうすればよいですか?

#import('dart:html');
#import('dart:io');

class htmlIO {

  ButtonElement _aButton;

  htmlIO() {
  }

  void handlePress(Event e) {
    var connection = new HttpClient().get('www.google.com', 80, '/');
    write('made it');
  }

  void run() {
    _aButton = document.query("#aButton");
    _aButton.on.click.add(handlePress);
    write("Hello World!");
  }

  void write(String message) {
    // the HTML library defines a global "document" variable
    document.query('#status').innerHTML = message;
  }
}

void main() {
  new htmlIO().run();
}
4

2 に答える 2

11

dart:htmlはクライアント側のライブラリですdart:ioが、はサーバー側のライブラリです。 dart:htmlブラウザの機能を利用しますが、dart:ioブラウザのセキュリティによって制限されている機能(ファイルシステムへのアクセスなど)を利用します。

サーバー上で「モック」ブラウザを使用できるようになる時期が来るかもしれdart:htmlません。これは、単体テストなどに役立つ可能性がありますが、まだそれはできません。

于 2012-04-15T19:51:19.327 に答える
4

短い答え、できません。Chris が言及しているように、dart:io ライブラリはサーバー ライブラリ専用です。

HTML アプリで HTTP サービスに接続しようとしているようです。HttpRequest ライブラリを確認してください。例へのリンクは次のとおりです: http://c.dart-examples.com/api/dart-html/interface/eventtarget/httprequest/asynchronous

import 'dart:html';
import 'dart:convert';

void onSuccess(ProgressEvent event, HttpRequest request) {
  print(event.loaded); // 0
  print(request.statusText); // ok
  print(request.responseText); // "(resource text)"
}

/**
 * test.txt file must be of the same origin
 * Or the response header must contain "Access-Control-Allow-Origin: [*|origin]"
 */
void main() {
  String url = "test.txt";  
  HttpRequest request = new HttpRequest();
  request.open("GET", url, async : true);
  request.onLoadEnd.listen((ProgressEvent e) => onSuccess(e, request));
  request.send();
}

dart:html からの HttpRequest と dart:io からの HttpClient を統合するリクエストがあります。http ://code.google.com/p/dart/issues/detail?id=2677 を参照してください。

于 2012-08-21T20:41:53.223 に答える