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'); }
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;
5 Type de données Dart
Nombres : int double
Chaînes : String
const NUM = 123; final Time = new DateTime.now();
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;
List (list) : C'est un tableau en js
bool flag = true;
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('王清');
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['name']); // 第二种定义Map var p = new Map(); p['name'] = '王清'; print(p); 问:如何判断类型?(关键字 is) var str = '123'; if (str is String) { print('字符串类型'); } else if (str is int) { print('数值类型'); } 注意: 取整运算符 如:print(12~/5); // 2 为空赋值 如:int b; b??=23; print(b); // 23 解释:如果b为空的话就赋值23 int a; int b = a??10; print(b); // 10
②String est converti en type Number parse
int num = 12; print(num.toString());
2) Convertir les autres types en type booléen
String str = '123'; print(int.parse(str)); print(double.parse(str));
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 = ''; 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
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]
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
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
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}
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}
removeAll : supprimer la valeur actuelle
Set set1 = [1,2,100,200,300,3].toSet(); set1.retainAll([1,2]); print(set1); // {1,2}
Déduplication :
Set set1 = [1,2,100,200,300,3].toSet(); set1.removeAll([1,2]); print(set1); // {100,200,300,3}
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);
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 globalObjets 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ésprint(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{ @Ooverridevoid 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
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
@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 getnameImporter '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!