Dartの基礎知識ポイントまとめ

王清
リリース: 2020-05-04 13:48:23
オリジナル
190 人が閲覧しました

1. Dart 構文

1. 開発ツール

プラグインをインストールします: dart、Code Runner

2. エントリメソッド

main(){
  print('你好,dart');
}
// 表示main方法没有返回值
void main(){
  print('你好,dart');
}
ログイン後にコピー

3. Dart は、次のことを必要としない強力なスクリプト言語です。事前定義された型、自動型推論

dart で定義された変数は var キーワードを通じて宣言できます

dart には型チェックがあります

例:

var str = 'this is var';
String str = 'this is string';
int str = 123;
ログイン後にコピー

4. Dart 変数

Final const は定数を定義できます

Final値を割り当てずに開始することも、値を割り当てることができるのは 1 回だけです。final には const コンパイル時定数の特性があるだけでなく、最も重要なことは、これが実行時定数であり、final が遅延初期化であることです。つまり、実行時に最初に使用する前に初期化されません

例:

const NUM = 123;
final Time = new DateTime.now();
ログイン後にコピー

5. Dart データ型

数値 (数値): int double

文字列 (文字列): String

如:var str = 'this is a string';
   String str = 'this is a string';
   // 定义多行字符串
   String str = '''
     my name is wq;
     my age is 23;
   ''';
   // 字符串拼接
   String name = 'wq';
   int age = 23;
   String myInfo = '我的名字叫$name,我今年$age岁';
   // 注意:如果使用+实现字符串拼接,那么必须要是同类型的数据
   String firstName = '王';
   String lastName = '清';
   String myInfo = lastName + ':' + firstName;
ログイン後にコピー

ブール値(Boolean): bool

  bool flag = true;
ログイン後にコピー

List(リスト): js内にあります Array

// 第一种定义List的方式
  var list1 = [1,2,3];
  print(list1.length);
// 第二种定义List的方式
  var list = new List();
  list.add(1);
  list.add(2);
// 定义List指定元素类型
    var list = new List<String>();
   list.add(&#39;王清&#39;);
ログイン後にコピー

Maps(辞書): Mapはキーと値のペアに関するオブジェクトです

// 第一种定义Map
  var person = {
    "name": "王清",
    "age": 23
  };
  print(person[&#39;name&#39;]);
// 第二种定义Map
  var p = new Map();
  p[&#39;name&#39;] = &#39;王清&#39;;
  print(p);
 问:如何判断类型?(关键字 is)
    var str = &#39;123&#39;;
    if (str is String) {
       print(&#39;字符串类型&#39;);
    } else if (str is int) {
       print(&#39;数值类型&#39;);
    }
   注意:
    取整运算符 
      如:print(12~/5); // 2
    为空赋值  
      如:int b; b??=23; print(b);  // 23
      解释:如果b为空的话就赋值23
      int a;  int b = a??10;  print(b); // 10
ログイン後にコピー

1) 間の変換

数値型と文字列型

①数値は文字列型に変換 toString()

int num = 12;
print(num.toString());
ログイン後にコピー

②文字列は数値型parseに変換

String str = &#39;123&#39;;
print(int.parse(str));
print(double.parse(str));
ログイン後にコピー

②その他の型はブール型に変換

①isEmpty:判断当前字符串是否为空
   String str = &#39;&#39;;
    print(str.isEmpty);
②未赋值 var myNum; print(myNum == null); // true
③为0 var myNum=0; print(myNum ==0);  // true
④为NaN var myNum = 0/0; print(myNum.isNaN); // true
ログイン後にコピー

7.List

共通属性:

length: length

reversed:flipped

var list = [1,2,3] ;

print(list.reversed.toList()); 要素

(Addall (): ステッチリスト list.adddall ([1, 2,3])

Indexof (): データを検索し、戻り要素の戻り値を見つけて、-1 を返すようにします

Remove (): 指定された要素を削除します

を通じて を通じて を通じて 使用して 使用して 使用してスルー アウト アウト スルー アウト 一緒に スルー アウト 一緒にプシー 一緒にアウトセラロウ 許可 許可 許可 アウト アウト アウト スルー アウト スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルーto‐through through‐to‐through‐‐to-underwrew to be-come-to-cometotototototototocometo(2to3mpserv over 代理 代理 スルー)

1

INSERT (INDEX, Value): 指定された下限入札で要素を挿入します

Insertall (Index, List): リストを挿入 list list list list.insertall (2, [100,1]);

TOLIST (

TOLIST (): 他の型をリストに変換する

Join(): リストをstring String = list.join('-');

split(): 文字列を List に変換します

8.Set

Set は無秩序で利用できないセットなので、メイン関数では取得できません。よく使用される属性を比較することです:

ISEMPTY: 空かどうか

IsnoteMpty: 空でないかどうか

FIRST: 最初の要素を返す

last: 最後の要素を返す

length: 長さ

一般的なメソッド:

addAll: リストを追加して Set に変換します

contains: 単一の要素が含まれているかどうかをクエリします set.contains(1)

containsAll : 複数の要素が含まれているかどうかをクエリします set.containsAll([1,2])

差分: 異なるセットを持つ 2 つの要素を返す set1.difference(set2).toList()

交差: 同じ要素を持つ 2 つの要素を返す

結合: 2 つのセットのすべての要素が含まれる

Set set1 = [1,2,3].toSet();
Set set2 = [2,3,4].toSet();
print(set1.union(set2).toList()); // [1,2,3,4]
ログイン後にコピー

クリア:

を最初にクリアする ここで:条件による最初の修飾値のクエリ

Set set1 = [1,2,100,200,300,3].toSet();
var list = set1.firstWhere((value){
     return value > 100;
});
print(list); // 200
ログイン後にコピー

lastWhere: 条件による最初の修飾値の逆クエリ

Set set1 = [1,2,100,200,300,3].toSet();
var list = set1.firstWhere((value){
   return value > 100;
});
print(list); // 300
ログイン後にコピー
use using使用する ' ' を使用する オフ アウト オフ アウト スルー アウト スルー アウト スルー アウト スルー アウトアウト スルー アウト オフ アウト スルー アウト アウト アウト アウト スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルースルーアウトスルースルーアウトスルースルーアウトアウトトゥアウトトゥトゥアウトアウトアウトトゥアウトそうそうそうそうtososososososososososototototototototototo to to To to to to to toss、

9. Map ) は順序のないキーと値のペアです

共通属性:

キー: すべてのキー値を取得します

値: すべての値を取得します

IsEmpty:空ですか? isNotEmpty: 空ではありませんか? 共通属性 :

addAll(): 複数のキーと値のペアを追加します

"],

"work":["delivery worker"]

});

Remove(key): キーと値のペアを削除しますキー名');

containsValue(value): があるかどうかマップ内のこの値のキーと値のペア 例: m.containsValue(23);

containsKey(key): このキー名にキーと値のペアがあるかどうか")

10. where any any (List、Set、Map に共通)

一般的なループ:

List list = [100,200,300,400];

for(var i in list){

print(i) // 100 200 300 400

} }

forEach ループ:

List list = [100,200,300,400];

list.forEach((value) => print(value));

List.forEach((value ; var newList = list.map) ((value){

var newList = list.map((value){

var newList 戻り値 * 2;

});

print(newList.toList()); // [200,400,600,800]

where ループ:

List list = [100,200,300,400];

var newList = list.where((value ){

戻り値 > 200; 条件の要素 (存在する場合) true を返す

リスト list = [100,200,300,400] ; var flag = list.any((value){

using using ' using 's ' through through ‐ward ‐ ‐ ‐ ‐ 値を返す > 200; print(flag);

すべてのループ:

意味: すべての要素が条件を満たしているかどうかを判断し、すべての要素が条件を満たしている場合は true を返します

List list = [100,200,300,400];

var flag = list.every((value){

} );

print(flag); 本体

RETURN returns

} ① 他の型のエラーを報告する場合は、パラメータの型を int として定義します

int Getnum (int N) {

n を返します

}

var n = getnum (60) (60) ; // 60

② オプションパラメータ

String PRINTUSERINFO (String name, [int Age, String Sex]) {

if (Age) ! = NULL && SEX! = NULL) {

}

R Printuserinfo ('Wang Qing', 20));

③ デフォルトパラメータ

String Printuserinfo (String name, [int age = 10]) {

if (Age! = NULL) {

Return '$ name $年齢';

name $age'; Print(printUserInfo('Wang Qing'));

④名前付きパラメータ

String printUserInfo(String name, {String sex, int age=10}){

戻る'$name '; in}

printuserinfo(' wang qing '、sex:' male '、age:20); ISEVENですか

ISODDですか? Baoの特徴

グローバル変数はメモリに常駐し、グローバル変数はグローバル変数の特性を汚染します: メモリ内に留まらないでください。ゴミのリサイクルメカニズムにより、地球全体を汚染しません

12. クラスオブジェクト

Dart のすべてのオブジェクトは Object クラスから継承します

Dart はオブジェクト指向です。クラスと単一継承を使用する言語で、すべてのオブジェクトがクラスです。 Person(String name,int age){

This.name = name;

this.age = age;

}

// 名前付きコンストラクター:複数の名前付きコンストラクターを作成できますが、コンストラクターは 1 つだけです Person.now(String name, int age) this.name = 名前; 人(this.name,this.age);

void Getinfo () {

Print ("$ {this.name} --- $ {this.age}");

p.getInfo();p2.getinfo ();

}

:: 別ファイルのクラスを削除する方法

1. 上記のクラスとして新しい person.dart ファイルの内容を作成します

2. 引用符

インポート'Person.dart ';

void main(){

プライベートプロパティ:

Dart とその他のオブジェクト指向 言語は異なります。ただし、プライベート プロパティまたはメソッドをプライベートとして定義するには、_ を使用できます。プライベート プロパティまたはメソッドは、内部の新しいメソッドまたはプロパティを通じてのみ呼び出すことができます。この関数は次のように省略できます

person(this._name,this.age);

コンストラクター s Person.Now (文字列名、整数年齢) {

this._name = 名前

this.age = 年齢; ;} void getInfo(){"$ {this。_name} --- $ {this.age}");

' の ' を使用して、領域を取得します {U Return this.Height * this.width

}}}

void main ( ){Rect r = new Rect(10、10);

クラス RECT {

高さの数値;

幅の数値; (): 高さ = 10、幅 = 10 {

}

{{

{

print(r.area) メンバー; s ① 静的キーワードを使用してクラスレベルの変数と関数を実現します

② 静的メソッドは非静的メンバーにアクセスできません

クラス パーソン {

静的文字列名 = 'Wang Qing'

;

static void show(){ void main(){

条件演算 件 AS 型変換

IS 型判定

.. クラス結合演算

:

クラスの人{

文字列名;

num 年齢 ); void main(){ ;

//オブジェクトがクラス

のインスタンスであるかどうかを判断します using using using using using ' ' から ' を使用を使用する を使用する を使用する を使用する を使用する スルーアウト スルーアウト スルーアウト スルーアウト スルーアウト スルー アウト スルー アウト スルー アウト スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー「張裕」

。 . show(); ③サブクラスは親クラスのメソッドゲッターとセッターをオーバーライドできますuse. 文字列の高さ = '170cm';

person(this.name,this. age);

person.other(this.name ,this.age);

}

class Web extends person{

文字列 sex;

' s ' s ' s ' s ‐ ‐ ‐ ‐ :super(name,age){

this.sex = sex; void run(){

」 super.work(); Print (this.height) 'Print (' sub-class printinfo ') の親の属性

void main () {

web w = 新しいウェブ (' Zhang San ', 12,' Man ')

w.printinfo ();

① ① ① 抽象クラスを実装する場合。インターフェイスとして、抽象クラスで定義されたすべてのメソッドと属性を実装する必要があります

⑤ 抽象クラスはインスタンス化できず、それを継承するサブクラスのみがインスタンス化できます

extends とimplements の違い:

① if抽象クラスを定義し、自己クラスの描画を制約するために抽象メソッドを使用するには、extendsを使用して抽象クラスを継承します

② 抽象クラスを標準としてのみ考える場合、抽象クラスを実装するにはimplementsを使用します

T 抽象クラス Animal {

void Ear); // 抽象メソッド

void Drink () {

proprint ('水が飲みたい'); I @Override

void Eat () {

Print ('子犬は骨を食べています ')abstractクラスdb {

string url;

add(); ;

}

抽象クラス b {

propb (); Return null; @ @& oVERRIDE

Printb () {

Return null;

ミックスインの使用条件: ① ミックスインとしてのクラスは Object からのみ継承でき、他のクラスからは継承できません

② ミックスインとしてのクラスはコンストラクターを持つことができません

③ クラス混合物の複数のミキシンクラスは、決してインターフェースではなく、新しい機能

、、、、、、、、、、、、、、、、、、、、、、、そしてものです。 with A,B{

}

void main(){

C c = new C();

c.printA();

d.printA();

d.printB();

}

注: extends であろうと with であろうと、同じメソッドが存在する場合、後でそれを呼び出した人がそれを呼び出します

14. ジェネリックス

理解: ジェネリックスは、クラス、インターフェイス、メソッドの再利用を解決し、不特定のデータ型 (型チェック) ① 一般的なメソッド

using using ' s ' s ' s through through through through through through through through through through through through-through-to-under-touncing

Print (getData< int&gt;(21));

List list = new List();

void add(T value){

this.list.add(value);

}

}

void main(){

MyArray myArray = new MyArray();

myArray.add('wq');

}

③泛型インターフェイス

抽象クラス Cache{

getByKey(String key);

void setBykey(文字列キー,T 値);

}

class FileCache extends Cache{

@override

getByKey(String key) {

return null;

}

@override

void setBykey(String key, T value) {

print('$key - -- $value');

}

}

void main(){

FileCache fc = new FileCache();

fc.setBykey('wq', '我是文件缓存') ;

}

15.Dart中の库

①我们自定的库

import 'lib/XXX.dart';

②系统内置库

import 'dart:io';

import ' dart:convert';

void main() async{

var result = await getDataFromZhihuAPI();

print(result);

}

// api接続口: http://news-at.zhihu. com/api/3/stories/latest

getDataFromZhihuAPI() async{

//1、创建HttpClient对象

var httpClient = new HttpClient();  

//2、创建Uri对象

var uri = new Uri.http('news-at.zhihu.com','/api/3/stories/latest');

//3、発行请求、等待ち请要求

var request = await httpClient.getUrl(uri);

//4、关闭请要求、等待ち响应

var response = await request.close();

//5、解読响应の内容

return await response.transform(utf8.decoder).join();

}

③Pub管理系统中の库

第一步:从下面网址找到要用库

https://pub .dev/パッケージ

https://pub.flutter-io.cn/packages

https://pub.dartlang.org/flutter/

2番目: 创建一pubspec.yaml文件、内容は以下の通り:

名前: xxx

description: 新しいflutter moduleプロジェクト

依存関係:

http: ^0.12.1

第四步:在文件目录执行 pub get

第五步:写代码

インポート 'パッケージ: http/http.dart' as http;

import 'dart:convert' as Convert;

void getData() async {

var url = 'http://www.phonegap100.com/appapi.php?a= getPortalList&catid=20&page=1';

var response = await http.get(url);

if (response.statusCode == 200) {

print(convert.jsondeCode((respons.body));}

小さい知識ポイント:识识partialインポートimport 'lib/mymath.dart' getnameを非表示にします

以上がDartの基礎知識ポイントまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
1
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート