Maison > interface Web > js tutoriel > le corps du texte

Résumé des points de connaissances de base de Dart

王清
Libérer: 2020-05-04 13:48:23
original
175 Les gens l'ont consulté

1. Syntaxe Dart

1. Outils de développement

Vscode, installer des plug-ins : dart, Code Runner

2. >3 Variables .Dart

Dart est un langage de script puissant qui n'a pas besoin de prédéfinir les types et déduira automatiquement les types

Les variables définies dans Dart peuvent être déclarées via le mot-clé var

La vérification de type

existe dans Dart, telle que :

main(){
  print('你好,dart');
}
// 表示main方法没有返回值
void main(){
  print('你好,dart');
}
Copier après la connexion

4 Les variables Dart

final const peuvent définir des constantes

final peut démarrer. sans attribuer de valeur, ne peut être attribué qu'une seule fois ; et final a non seulement les caractéristiques des constantes de compilation const, mais le plus important est qu'il s'agit d'une constante d'exécution, et final est une initialisation paresseuse, c'est-à-dire qu'elle n'est pas initialisé avant la première utilisation au moment de l'exécution

Par exemple :

var str = 'this is var';
String str = 'this is string';
int str = 123;
Copier après la connexion

5 Type de données Dart

Nombres : int double

Chaînes : String

const NUM = 123;
final Time = new DateTime.now();
Copier après la connexion

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;
Copier après la connexion

List (list) : C'est un tableau en js

  bool flag = true;
Copier après la connexion

Maps (dictionnaire) : Map est un objet lié à paires clé-valeur

// 第一种定义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;);
Copier après la connexion

6 .Conversion de type

1) Conversion entre les types Number et String

①Le nombre est converti en type String toString()

// 第一种定义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
Copier après la connexion

②String est converti en type Number parse

int num = 12;
print(num.toString());
Copier après la connexion

2) Convertir les autres types en type booléen

String str = &#39;123&#39;;
print(int.parse(str));
print(double.parse(str));
Copier après la connexion

7.List

Attributs communs :

longueur : longueur

inversé : inversé

var list = [1,2,3];

print(list.reversed.toList());

isEmpty : s'il est vide

isNotEmpty : s'il n'est pas vide

Méthodes couramment utilisées :

add() : Ajoutez un élément, un seul élément peut être ajouté

addAll() : Épisser la liste list.addAll([ 1,2,3])

indexOf() : Rechercher des données, trouver l'indice de l'élément renvoyé, s'il n'est pas trouvé, renvoyer -1

remove() : Supprimer l'élément spécifié

                                                                                Utiliser avec                        dehors dehors dehors dehors partout sous dehors jusqu'à ‐ à ‐ ‐‐‐‐ , Les éléments entre sont 1

insert(index,value) : Insérer l'élément

à l'indice spécifié insertAll(index,list) : Insérer la liste à l'indice spécifié list.insertAll(2 , [100,1]);

toList() : Convertir d'autres types en listes

join() : Convertir la liste en chaîne String strList = list.join('-');

split() : Le la chaîne est convertie en List

8.Set

L'ensemble est un ensemble non ordonné et non répétitif, donc les données ne peuvent pas être obtenues via des indices. La fonction la plus importante est de supprimer les doublons de la liste ;

Attributs communs :

isEmpty : s'il est vide

isNotEmpty : s'il n'est pas vide

first : renvoie le premier élément An

last : renvoie le dernier élément

length : length

Méthodes courantes :

addAll : ajouter une liste et convertir en Set

      contient : requête s'il contient un seul élément set.contains(1)

        containAll : demande s'il contient plusieurs éléments set.containsAll([1,2])

          différence : renvoie deux ensembles d'éléments différents set1 .difference(set2).toList()

intersection : Renvoie deux éléments avec les mêmes éléments

union : Contient tous les éléments des deux ensembles

①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
Copier après la connexion

clear : clear

firstWhere : Interroger la première valeur qualifiée dans le sens direct selon la condition

Set set1 = [1,2,3].toSet();
Set set2 = [2,3,4].toSet();
print(set1.union(set2).toList()); // [1,2,3,4]
Copier après la connexion

lastWhere : Interroger la première valeur qualifiée dans le sens inverse selon la condition

Set set1 = [1,2,100,200,300,3].toSet();
var list = set1.firstWhere((value){
     return value > 100;
});
print(list); // 200
Copier après la connexion

RemoveWhere : supprimer les éléments qualifiés

Set set1 = [1,2,100,200,300,3].toSet();
var list = set1.firstWhere((value){
   return value > 100;
});
print(list); // 300
Copier après la connexion

retentionWhere : conserver les éléments qualifiés

Set set1 = [1,2,100,200,300,3].toSet();
set1.removeWhere((value){
   return value > 100;
});
print(set1);  // {1, 2, 100, 3}
Copier après la connexion

retentionAll : conserver uniquement la valeur actuelle

Set set1 = [1,2,100,200,300,3].toSet();
set1.retainWhere((value){
   return value > 100;
});
print(set1);  // {200,300}
Copier après la connexion

removeAll : supprimer la valeur actuelle

Set set1 = [1,2,100,200,300,3].toSet();
set1.retainAll([1,2]);
print(set1); // {1,2}
Copier après la connexion

Déduplication :

Set set1 = [1,2,100,200,300,3].toSet();
set1.removeAll([1,2]);
print(set1); // {100,200,300,3}
Copier après la connexion

9. La carte (mappage) est une paire clé-valeur non ordonnée

Attributs communs :

Clés : obtenez toutes les valeurs clés

valeurs. : Récupère toutes les valeurs

isEmpty : s'il est vide

isNotEmpty : s'il n'est pas vide

Attributs communs :

addAll() : Ajouter plusieurs paires clé-valeur

                                                                                                                                       ": 23

              };

                   m.addAll({

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

                                        🎜 >                } ); ) : Que ce soit il existe une paire clé-valeur

Par exemple : m.containsKey("name")

10 forEach map où any each (commun à List, Set, Map)

Boucle générale :

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

for(var i in list){

print(i); 200 300 400

}

forEach Boucle :

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

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

list.forEach((valeur){

                                                                                       }); 00];

var newList = list.map((valeur){

valeur de retour * 2;

});

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

où boucle :

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

var newList = list.where((value){

valeur de retour > 200;

});

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

any loop :

Signification : Déterminez s'il y a des éléments qui remplissent les conditions. S'il y a des éléments, retournez. vrai

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

var flag = list.any((value){

valeur de retour > 200;

} );

print(flag);

chaque boucle :

Signification : Déterminer si tous les éléments remplissent les conditions, Si tous les éléments correspondent, renvoie true 🎜>

});

print(flag); // true

11 Fonctions, paramètres, fermetures, etc.

1) Format de fonction de base

Renvoie le nom de la méthode de type (paramètre 1, paramètre 2 ...) {

corps de la méthode

Renvoie la valeur de retour

}

① Définissez le type de paramètre comme int. S'il s'agit d'un autre type, une erreur sera signalée

var n = getNum(60);

                                                                 .                                                                 print(n);

if ( Âge ! = NULL && SEX ! = Null) {

Return '$ Name $ Age $ Sex';

                                                                                                                                                .

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

③ paramètres par défaut

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

                                                                                                              ;

► , {String sex, int age=10}){

                                                                                                                                                                                      🎜>                                                                                            ,âge : 20)); print (fn());

⑥Fonction flèche : notez que les fonctions fléchées ne prennent pas en charge les instructions multilignes

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

Petites connaissances points :

Est-ce une valeur ou un nombre merveilleux ?

                                                                                                                                                                                                                                               être  ){

                    print( str);

                             ( 'IIFE'); Les variables pollueront le

Caractéristiques des variables locales : non -la mémoire résidente sera recyclée par le mécanisme de ramasse-miettes et ne polluera pas le global

Vous souhaitez réaliser la fonction : résident en mémoire, ne polluera pas le global

Objets de classe

12. 🎜>

Tout dans Dart est un objet, et tous les objets héritent de la classe Object

Dart est un langage orienté objet qui utilise des classes et un héritage unique. les classes sont des sous-classes d'Objet

telles que :

class Person{

String name;

int age;

// Constructeur

Personne (String name,int age){

this.name = nom;

This.age = age;

                                                                                                                                                            int âge){.

this.name = name;

this.age = age;

}

// Constructeur Il peut être abrégé comme suit

Personne(this.name,this.age);

void getInfo(){

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

                                                        

            p.getInfo();

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

          p2.getInfo(); Class

2. Référence

import 'Person.dart';

void main(){

Personne p = new Person.now(' Wang Qing', 23); Il n'y a pas de modificateurs d'accès tels que privé, public et protégé

Mais nous pouvons utiliser _ pour définir une propriété ou une méthode comme privée

Les propriétés ou méthodes privées ne peuvent pas être instanciées et appelées directement, et ne peuvent être appelées qu'en interne. Nouvelles méthodes ou attributs à utiliser

                                                                                 La fonction peut être abrégée comme suit :

Person(this._name,this .age);

// Âge du constructeur nommé) {

this._name = name;

this.age = age;

}

                void getInfo(){

                                                                                                                                                            void getInfo(){

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

                                                                                        Extrait dans des fichiers

1) Getter et setter modificateurs dans la classe :

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);

// Appelez la méthode get modifiée en accédant aux propriétés

print(r.area);

// Appelez set pour attribuer une valeur à l'attribut en attribuant une valeur

                r.areaWidth = 20;

                    print( r.area); 2) Dans Dart, les variables d'instance

peuvent être initialisées avant l'exécution du corps du constructeur class Rect{

num height;

num width;

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

                                                                  >

}

void main(){

Rect r = new Rect();

print(r.area);

}

3) Membres statiques

①Utilisez le mot-clé static pour implémenter au niveau de la classe variables et fonctions

②Les méthodes statiques ne peuvent pas accéder aux membres non statiques, et les méthodes non statiques peuvent accéder aux membres statiques

class Person{

                                                                                                                                                                                                               

                                                                                                               

void main(){

Person.show();

}

4) Opérateurs d'objet dans Dart :

? Opérateur conditionnel

comme conversion de type

                                                                                                                                                                                

🎜>

num age;

                    Personne(ce.nom,cet.âge}'); );

                                        

                                                                                                                                                                    🎜>

                                                                                          Que p soit vide, s'il est vide, la méthode ou l'attribut ne sera pas exécuté

. p?.show();

Si l'objet est une instanciation de la classe

if (p is Person) {

                                                                                            🎜> var p1;

                   p1 ='' > ( p1 as Person).show();

                                                                    >

                   ..show(); ②子La classe héritera des attributs et méthodes visibles dans la classe parent, mais n'héritera pas du constructeur

③ La sous-classe peut remplacer les méthodes Getter et Setter de la classe parent

par exemple:

classe de classe {

personne (this.name, this.age ) ;

                    Personne.autre(ce.nom,cet.âge);                                                         ; } âge){

                              this.sex = sexe; 🎜 > annuler run(){

                                                                                               // la méthode de la classe parent via super dans la sous-classe

                                                                                                                                                                                                                                                                                           🎜>         }

                                                                                                                                                                                                 print( 'printInfo de la sous-classe'); ,'Male'); 🎜 >

Classes abstraites dans Dart : les classes abstraites Dart sont principalement utilisées pour définir des normes. Les sous-classes peuvent hériter de classes abstraites ou implémenter des interfaces de classes abstraites

①Les classes abstraites sont définies via le mot-clé abstract.

② La méthode abstraite dans Dart ne peut pas être déclarée par abstract. Il n'y a pas de méthode de méthode dans DART Si une classe abstraite est utilisée comme implémentation d'interface, elle doit implémenter toutes les méthodes et attributs définis dans la classe abstraite.

⑤ Les classes abstraites ne peuvent pas être instanciées, seules les sous-classes qui en héritent peuvent

étend et implémente Différence :

① Si vous souhaitez réutiliser les méthodes de la classe abstraite et utiliser méthodes abstraites pour contraindre le dessin de l'auto-classe, nous pouvons utiliser extends pour hériter de la classe abstraite

② Si vous traitez simplement la classe abstraite comme À des fins standard, nous utilisons des implémentations pour implémenter la classe abstraite

                     vider la boisson(){

                                                                                                                           Le chien étend l'animal{

@Ooverride

void Eat () {

Imprimer ('Le chiot est manger des os'); 🎜>                        vider la boisson(){

                                                                                                                                                                              void run(){

                            print(' Courons ~' );

              d.drink ();

                                                                                                                                                                                                                                                           // a.run(); Erreur

}

} Interface abstraite :

                base de données de classe abstraite{

                   URL de chaîne ; 🎜>                                                                                                   MySQL implémente DB{

                @override

             URL de chaîne ;

                                       add() {

                    return null;

                                                                                                                                                                                                     🎜>

                                                                                      🎜>                                                                                                                        PrintA();

                                                                                                                                         outils de classe C A, B{

@override

                                                                                                             @override

                printB() {

                                                                                                                                      Fonction similaire à l'héritage multiple ;

Conditions d'utilisation des mixins :

① Les classes en tant que mixins ne peuvent hériter que d'Object et ne peuvent pas hériter d'autres classes

② Les classes en tant que mixins ne peuvent pas avoir de constructeurs

③Une classe peut mélanger plusieurs classes de mixins

④Les mixins sont ni héritage ni interfaces, mais une toute nouvelle fonctionnalité

Tel que :

class A{

                 void printA(){

                                                                                      classe B{

Void printb () {

Print ('B');

}

}

La classe C étend un 🎜 > }

classe D avec A,B{

}

void main(){

>

c.printa (); 🎜>

c.printb ();

d = nouveau d ();

d.printa ();         d.printB(); Génériques

Compréhension : les génériques résolvent la réutilisabilité des classes, des interfaces et des méthodes et prennent en charge des types de données non spécifiques (vérification de type)

① Méthodes génériques

T getData (Valeur T){

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

} }

②Classe générique

classe MyArray{

            List list = new List();

             void add(T value){

                this.list.add(value);

            }

        }

     ③泛型接口

        classe abstraite Cache{

            getByKey(String key);

           void setBykey( Clé de chaîne, valeur T);

        }

        class FileCache extends Cache{

            @override

            getByKey(String key) {

                return null;

             }

            @override

void main () {

fileCache fc = new FileCache & lt; String & gt; ();

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

        }

15.Dart中的库

    ①我们自定义的库

        import 'lib/XXX.dart';

> var result = wait 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 = wait httpClient.getUrl(uri);

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

            var réponse = wait request.close();

            //5、解码响应的内容

            return wait réponse.transform(utf8.decoder).join();

        }

    ③Pub管理系统中的库

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

            https://pub.dev/packages

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

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

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

           nom : xxx

            description : Un nouveau projet de module Flutter.

            dépendances :  

               http : ^0.12.1

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

        第五步:写代码

            'package :http/http.dart' comme http;

            importer 'dart:convert' en tant que conversion;

            void getData() async {

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

                var réponse = attendre http.get(url);

                if (response.statusCode == 200) {

                                                                                                                                                                                                                                           🎜>         }

①Partial import

Import 'lib/mymath.dart' show getname; // Introduisez uniquement la méthode getname

Importer 'lib/mymath.dart' hide getname; // Masquer uniquement la méthode getName

                                                                                                                                                                                                                                                                                                l'importation de 'XXX .dart' est différée en tant que }

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
1
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!