非同期UI runOnUiThreadはFutterの中で何に相当しますか?

3198 ワード

非同期UI runOnUiThreadはFutterにおいてどのDartに相当しますか?シングルスレッド実行モデルで、Isolates(別のスレッドでDartコードを実行する方式)、イベントサイクル、および非同期プログラムをサポートします.Isolateを起動しない限り、あなたのDartコードはメインUIスレッドで実行され、イベントサイクルによって駆動されます.
例えば、UIスレッド上でネットワーク要求コードを実行しても良いです.UIが保留されることはありません.
loadData() async {
  String dataURL = "https://jsonplaceholder.typicode.com/posts";
  http.Response response = await http.get(dataURL);
  setState(() {
    widgets = JSON.decode(response.body);
  });
}
UIを更新するには、set Stateを呼び出すことができます.これは、build方法をトリガして再びデータを実行して更新します.
非同期的にデータをロードし、ListViewに表示する完全な例は以下の通りである.
import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

void main() {
  runApp(new SampleApp());
}

class SampleApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Sample App',
      theme: new ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: new SampleAppPage(),
    );
  }
}

class SampleAppPage extends StatefulWidget {
  SampleAppPage({Key key}) : super(key: key);

  @override
  _SampleAppPageState createState() => new _SampleAppPageState();
}

class _SampleAppPageState extends State {
  List widgets = [];

  @override
  void initState() {
    super.initState();

    loadData();
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
        appBar: new AppBar(
          title: new Text("Sample App"),
        ),
        body: new ListView.builder(
            itemCount: widgets.length,
            itemBuilder: (BuildContext context, int position) {
              return getRow(position);
            }));
  }

  Widget getRow(int i) {
    return new Padding(
        padding: new EdgeInsets.all(10.0),
        child: new Text("Row ${widgets[i]["title"]}")
    );
  }

  loadData() async {
    String dataURL = "https://jsonplaceholder.typicode.com/posts";
    http.Response response = await http.get(dataURL);
    setState(() {
      widgets = JSON.decode(response.body);
    });
  }
}
下のブログを見てもいいです.以前を振り返ってみて、勉強を続けてください.私が勉強している開発で出会った難題なども含まれています.
Futter入門、プロセスを学び、開発に入り、Android携帯で実行されるVisual Studio codeツール開発futteのまとめFutterトランスプラットフォーム開発はなぜFutterを選んだのですか?XML layoutファイルはどこに行きましたか?とレイアウトに追加または削除します.コンポーネントAndroid開発者for Futter(3)flunterのアニメーションはどうやって実現されますか?また、Canvas draw/paint Futterの輪播図を使って作成します.(2つの方法)CarouselSliderとPageView(自動ロードショー、手動で左右ドラッグもできます.)fterの中のtabband切り替えができます.listviewネストgridview Futterプロジェクトは第三者のプラグインライブラリファイルを作成して導入し、ローカル画像jsonデータは解析flunter runを導入してプロジェクトを実行する際に発生した問題の総括(Scaffold加padding及びflunter/material.dart’;爆発問題解決;listviewネストgridview滑り問題)[Futterではどのように構築されますか?](https://blog.csdn.net/wdx_1136346879/article/details/88974838)[Android IntentがFutterの中で何に相当しますか?およびデータ転送とstartActivityForResoultがFutterの中で何に相当しますか?](https://blog.csdn.net/wdx_1136346879/article/details/88975378)もしあなたに助けがあれば、startsを歓迎します.ありがとうございます.以下は自分で書いたデモです.勉強を見てみてもいいです.
【プロジェクトのソースコードgithub】(https://github.com/1136346879/flutter-)
[Futter中国語ネットありがとうございます](https://flutterchina.club/technical-overview/)