Heim > Web-Frontend > js-Tutorial > Hauptteil

Zusammenfassung der Dart-Grundwissenspunkte

王清
Freigeben: 2020-05-04 13:48:23
Original
190 Leute haben es durchsucht

1. Dart-Syntax

Vscode, Plug-Ins installieren: Dart, Code Runner

rrree

3 .Dart-Variablen

Dart ist eine leistungsstarke Skriptsprache, die keine Typen vordefinieren muss und automatisch Typen ableitet

In Dart definierte Variablen können über das Schlüsselwort var

Typprüfung

existiert in Dart, wie zum Beispiel:

main(){
  print('你好,dart');
}
// 表示main方法没有返回值
void main(){
  print('你好,dart');
}
Nach dem Login kopieren

4. Dart-Variablen

final const kann Konstanten definieren

final kann beginnen Ohne einen Wert zuzuweisen, kann es nur einmal zugewiesen werden. Und final hat nicht nur die Eigenschaften von const-Konstanten zur Kompilierungszeit, sondern das Wichtigste ist, dass es sich um eine Laufzeitkonstante handelt, und final ist eine verzögerte Initialisierung wird nicht vor der ersten Verwendung zur Laufzeit initialisiert

Zum Beispiel:

var str = 'this is var';
String str = 'this is string';
int str = 123;
Nach dem Login kopieren

5. Dart-Datentyp

Zahlen: int double

Strings: String

const NUM = 123;
final Time = new DateTime.now();
Nach dem Login kopieren

Booleans( Boolean): bool

如: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;
Nach dem Login kopieren

Liste (Liste): Es ist ein Array in js

  bool flag = true;
Nach dem Login kopieren

Karten (Wörterbuch): Karte ist ein Objekt, das mit verknüpft ist Schlüssel-Wert-Paare

// 第一种定义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;);
Nach dem Login kopieren

6. Typkonvertierung

1) Konvertierung zwischen Zahlen- und String-Typen

①Number wird in den String-Typ toString() konvertiert

// 第一种定义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
Nach dem Login kopieren

②String wird in den Zahlentyp parse konvertiert

int num = 12;
print(num.toString());
Nach dem Login kopieren

2) Andere Typen in den booleschen Typ konvertieren

String str = &#39;123&#39;;
print(int.parse(str));
print(double.parse(str));
Nach dem Login kopieren

7.List

Gemeinsame Attribute:

Länge: Länge

umgekehrt: umgedreht

var list = [1,2,3];

print(list.reversed.toList());

isEmpty: ob es leer ist

isNotEmpty: Ob es nicht leer ist

Häufig verwendete Methoden:

add(): Ein Element hinzufügen, es kann nur ein Element hinzugefügt werden

addAll(): Liste zusammenfügen list.addAll([ 1,2,3])

indexOf(): Daten durchsuchen, den Index des zurückgegebenen Elements finden, falls nicht gefunden, zurückgeben -1

remove(): Das angegebene Element löschen

                                                                                                                 out out out out out Throughunder out through out ‐ to ‐ ‐‐‐ , Die Elemente dazwischen sind 1

insert(index,value): Element

am angegebenen Index einfügen insertAll(index,list): Liste am angegebenen Index einfügen list.insertAll(2 , [100,1]);

toList(): Andere Typen in Listen konvertieren

join(): Liste in String konvertieren String strList = list.join('-');

split(): Konvertieren die Zeichenfolge in List

8.Set

Set ist eine ungeordnete und sich nicht wiederholende Menge, sodass Daten nicht durch Indizes abgerufen werden können. Die wichtigste Funktion besteht darin, Duplikate aus der Liste zu entfernen

Gemeinsame Attribute:

isEmpty: ob es leer ist

isNotEmpty: ob es nicht leer ist

first: gibt das erste An-Element zurück

last: Gibt das letzte Element zurück

length: length

Allgemeine Methoden:

addAll: Liste hinzufügen und in Set konvertieren

      enthält: Abfrage, ob es enthält ein einzelnes Element set.contains(1)

        enthältAlle: Fragt ab, ob es mehrere Elemente enthält set.containsAll([1,2])

          Unterschied: Gibt zwei verschiedene Elemente zurück, set1. Differenz(set2).toList()

Schnittmenge: Gibt zwei Elemente mit den gleichen Elementen zurück

Vereinigung: Enthält alle Elemente der beiden Mengen

①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
Nach dem Login kopieren

klar: klar

firstWhere: Fragen Sie den ersten qualifizierten Wert in Vorwärtsrichtung gemäß der Bedingung

Set set1 = [1,2,3].toSet();
Set set2 = [2,3,4].toSet();
print(set1.union(set2).toList()); // [1,2,3,4]
Nach dem Login kopieren

ab. lastWhere: Fragen Sie den ersten qualifizierten Wert in Rückwärtsrichtung gemäß der Bedingung

Set set1 = [1,2,100,200,300,3].toSet();
var list = set1.firstWhere((value){
     return value > 100;
});
print(list); // 200
Nach dem Login kopieren

ab. qualifizierte Elemente löschen

Set set1 = [1,2,100,200,300,3].toSet();
var list = set1.firstWhere((value){
   return value > 100;
});
print(list); // 300
Nach dem Login kopieren

retainWhere: qualifizierte Elemente beibehalten

Set set1 = [1,2,100,200,300,3].toSet();
set1.removeWhere((value){
   return value > 100;
});
print(set1);  // {1, 2, 100, 3}
Nach dem Login kopieren

retainAll: nur den aktuellen Wert beibehalten

Set set1 = [1,2,100,200,300,3].toSet();
set1.retainWhere((value){
   return value > 100;
});
print(set1);  // {200,300}
Nach dem Login kopieren

removeAll: den aktuellen Wert löschen

Set set1 = [1,2,100,200,300,3].toSet();
set1.retainAll([1,2]);
print(set1); // {1,2}
Nach dem Login kopieren

Deduplizierung :

Set set1 = [1,2,100,200,300,3].toSet();
set1.removeAll([1,2]);
print(set1); // {100,200,300,3}
Nach dem Login kopieren

9. Map (Mapping) ist ein ungeordnetes Schlüssel-Wert-Paar

Allgemeine Attribute:

Schlüssel: Alle Schlüsselwerte abrufen

Werte: Alle Wertwerte abrufen

isEmpty: ob es leer ist

isNotEmpty: ob es nicht leer ist

Allgemeine Attribute:

addAll(): Fügen Sie mehrere Schlüssel-Wert-Paare hinzu

                                                                                                                                                                                                                                                                                                    "love":["game","coding"],

                                                   Schlüssel(Schlüssel): Ob Für diesen Schlüssel gibt es ein Schlüssel-Wert-Paar

Zum Beispiel: m.containsKey("name")

10, wobei alle alle (gemeinsam mit List, Set, Map) sind.

Allgemeine Schleife:

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

for(var i in list){

print(i); // 100 200 300 400

}

forEach-Schleife :

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

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

list.forEach((value){

                                                                                   }); 00];

var newList = list.map((value){

Rückgabewert * 2;

});

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

where loop:

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

var newList = list.where((value){

return value > 200;

});

print(newList.toList()); // [300,400]

beliebige Schleife:

Bedeutung: Bestimmen Sie, ob Elemente vorhanden sind, die die Bedingungen erfüllen. Wenn vorhanden, kehren Sie zurück true

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

var flag = list.any((value){

return value > 200;

} );

print(flag);

jede Schleife:

Bedeutung: Bestimmen Sie, ob alle Elemente die Bedingungen erfüllen. Wenn alle Elemente übereinstimmen, wird true zurückgegeben 🎜>

});

print(flag); // true

11. Funktionen, Parameter, Abschlüsse usw.

1) Grundlegendes Funktionsformat

Geben Sie den Typmethodennamen zurück (Parameter 1, Parameter 2 ...) {

Methodenkörper

Rückgabewert zurückgeben

}

① Definieren Sie die Parametertyp als int. Wenn es sich um andere Typen handelt, wird ein Fehler gemeldet.

var n = getNum(60);

                                                    print(n)

if ( Alter! = NULL && SEX! = Null) {

Return '$ Name $ Age $ Sex';

                                                                                                                           .

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

③ Standardparameter

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

;

⑥Pfeilfunktion: Beachten Sie, dass Pfeilfunktionen keine mehrzeiligen Anweisungen unterstützen

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

Kleine Kenntnisse Punkte:

Ist es ein Wert oder eine wunderbare Zahl?

                                                                                                                                                                                                                             ){

                    print( str);

                           ('IIFE'); wird die globalen

Eigenschaften lokaler Variablen verschmutzen: nicht ansässig Der Speicher wird durch den Garbage-Collection-Mechanismus recycelt und verschmutzt nicht die globalen

Möchten Sie die Funktion erreichen, dass sie im Speicher resident ist, werden die globalen

Klassenobjekte

Alles in Dart ist ein Objekt und alle Objekte erben von der Object-Klasse.

Dart ist eine objektorientierte Sprache, die Klassen und Einzelvererbung verwendet. Alle Objekte sind Instanzen von Klassen und alle Klassen sind Unterklassen of Object

wie zum Beispiel:

class Person{

String name;

int age;

// Konstruktor

Person(String name,int age){

this.name = name;

This.age =.

                                                                                                                               

this.name = name;

this.age = age;

}

// Konstruktor Es kann wie folgt abgekürzt werden

Person (this.name,this.age);

void getInfo(){

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

                                                    Person p2 = new Person.now('Wang Sicong', 30);

          p2.getInfo(); Klasse

2. Referenz

import 'Person.dart';

void main(){

Person p = new Person.now(' Wang Qing', 23); Es gibt keine Zugriffsmodifikatoren wie privat, öffentlich und geschützt

Aber wir können _ verwenden, um eine Eigenschaft oder Methode als privat zu definieren

Private Eigenschaften oder Methoden können nicht direkt instanziiert und aufgerufen werden, sondern nur intern. Neue zu verwendende Methoden oder Attribute

                                                            Die Funktion kann wie folgt abgekürzt werden:

Person(this._name,this .age);

// Benanntes Konstruktoralter) { this._name = name;

this.age = Age;

}

void Getinfo () {

Printttt ("${this._name}---${this.age}");

                                                                                          In Dateien extrahiert

1) Getter- und Setter-Modifikatoren in der Klasse:

class Rect{

num height;

num width;

Rect(this.height, this.width);

set areaWidth(value){

this.height = value;

}

<. return this.height this.void main>

Rect r = new Rect(10, 10);

// Rufen Sie die Get-Modified-Methode auf, indem Sie auf Eigenschaften zugreifen

print(r.area);

// Aufrufsatz, um dem Attribut einen Wert zuzuweisen, indem ein Wert zugewiesen wird

                r.areaWidth = 20;

                    print(r.area); 2) In Dart, Instanzvariablen

können initialisiert werden, bevor der Konstruktorkörper ausgeführt wird. Klasse Rect{

num height;

num width;

Rect() :height= 10,width=10{

                                                                🎜>

Rect r = new Rect();

print(r.area);

}

3) Statische Mitglieder

① Verwenden Sie das Schlüsselwort static, um Variablen und Funktionen auf Klassenebene zu implementieren

② Statische Methoden können nicht auf nicht statische Mitglieder zugreifen, und nicht statische Methoden können auf statische Mitglieder zugreifen

Klasse Person{

                                                                                                                                    

                                                                                                        

void main(){

Person.show();

}

4) Objektoperatoren in Dart:

? Bedingungsoperator

als Typkonvertierung

                                                                                                                                                                    Person(this.name,this.age}'); );

.                                                                                                                                                 🎜>

                                                                                Unabhängig davon, ob p leer ist, wird die Methode oder das Attribut nicht ausgeführt, wenn es leer ist 🎜> p?.show();

Ob das Objekt eine Instanziierung der Klasse ist

if (p is Person) {

                                                                                  🎜> var p1;

                   p1 =''; p1 als Person).show();

                                                                   >

                   ..show(); ②子Die Klasse erbt die sichtbaren Attribute und Methoden in der übergeordneten Klasse, erbt jedoch nicht den Konstruktor

③ Die Unterklasse kann die Getter- und Setter-Methoden der übergeordneten Klasse überschreiben

Zum Beispiel:

Klasse Person {

                                                Person(this.name,this. Alter ) ;

                   Person.other(this.name,this.age);                                                    }

                                                              Klasse Web erweitert       String-Sex; Alter){

                                  this.sex = sex; 🎜 > void run(){

                                                                                                                                                 die Methode der übergeordneten Klasse bis super in der Unterklasse

                                                                                                                                                                                                                                                                                                                                                                                                                print( 'printInfo of subclass'); Web('Zhang San', 12 ,'Male'); 🎜 >

Abstrakte Klassen in Dart: Abstrakte Klassen werden hauptsächlich zum Definieren von Standards verwendet oder abstrakte Klassenschnittstellen implementieren

①Abstrakte Klassen werden über das Schlüsselwort abstract definiert

② Die abstrakte Methode in Dart kann nicht von Abstract deklariert werden. Wenn eine abstrakte Klasse als Schnittstellenimplementierung verwendet wird, muss sie alle in der abstrakten Klasse definierten Methoden und Attribute implementieren

⑤ Abstrakte Klassen können nicht instanziiert werden, nur Unterklassen, die sie erben, können

erweitert und implementiert. Unterschied:

① Wenn Sie die Methoden in der abstrakten Klasse wiederverwenden und verwenden möchten abstrakte Methoden, um das Zeichnen der Selbstklasse einzuschränken, können wir Extends verwenden, um die abstrakte Klasse zu erben

② Wenn Sie die abstrakte Klasse nur als behandeln. Für Standardzwecke verwenden wir Implementierungen, um die abstrakte Klasse

                      void drink(){

                                                                                                                        Hund verlängert Tier{

@Ooverride

void Eat () {

Print ('Der Welpe ist void drink(){

                                                                                                                                                         void run(){

                            print(' Let's run~'); ;

            d.drink ();

                                                                                                                                                                                               // a.run(); Fehler

}

} Abstrakte Schnittstelle:

               abstrakte Klasse DB{

                  String-URL; 🎜>         }

                                                                                     MySQL implementiert DB{

                @override

             String URL;

                                                                                                                                                                     🎜>                                                             🎜>                                                                                              PrintA();

                                                                                                                                        Geräte der Klasse C A, B{

@override

                                                                                                            @override

                printB() {

                                                                                                                            Funktion ähnlich der Mehrfachvererbung;

Bedingungen für die Verwendung von Mixins:

① Klassen als Mixins können nur von Object erben und nicht von anderen Klassen erben

② Klassen als Mixins können keine Konstruktoren haben

③Eine Klasse kann mehrere Mixins-Klassen mixen

④Mixins sind weder Vererbung noch Schnittstellen, sondern eine brandneue Funktion

Wie zum Beispiel:

Klasse A{

                 void. printA(){

                                                                                    Klasse B{

Void printb () {

Print ('B');

}

}

Klasse C Erweitert ein 🎜 > }

class D with A,B{

}

void main(){

>

c.printa (

c.printb ();

d = new d ();

        d.printB(); Generics

Verständnis: Generics lösen die Wiederverwendbarkeit von Klassen, Schnittstellen und Methoden und unterstützen unspezifische Datentypen (Typprüfung)

① Generische Methoden

T getData (T-Wert){

                                                                                                                                          print(getData< ;int>(21));

} }

②Generic class

class MyArray{

            List list = new List();

            void add(T value){

                this.list.add(value);

            }

        }

        void main(){

            MyArray myArray = new MyArray();

            myArray.add('wq');

        }

    ③泛型接口

        abstract class Cache{

            getByKey(String key);

           void setBykey( String-Schlüssel,T-Wert);

        }

        class FileCache erweitert 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 = waiting 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 = waiting httpClient.getUrl(uri);

            //4、关闭请求,等待响应

            var Response =await request.close();

            //5、解码响应的内容

            return waiting Response.transform(utf8.decoder).join();

        }

    ③Pub管理系统中的库

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

            https://pub.dev/packages

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

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

        第二步: 创建一个pubspec. yaml文件,内容如下:

            Name: xxx

            Beschreibung: Ein neues Flattermodulprojekt.

            Abhängigkeiten:  

               http: ^0.12.1

   :http/http.dart' als http;

            import 'dart:convert' als konvertieren;

            void getData() async {

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

                var Response = waiting http.get(url);

                if (response.statusCode == 200) {

                                                                                                                                                                                                                                   🎜>         }

①Partial import

Import 'lib/mymath.dart' show getName; // Nur die getname-Methode einführen

Import 'lib/mymath.dart' hide getname; // Nur getName-Methode ausblenden

                                                                                                                                                                                                            . import 'XXX .dart' verzögert als }

Das obige ist der detaillierte Inhalt vonZusammenfassung der Dart-Grundwissenspunkte. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
1
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage