Bài đăng

Đang hiển thị bài đăng từ tháng 10 2, 2021

Danh sách các bài viết tổng hợp

I, Flutter: ·        Flutter 1.1 - Flutter là gì :  https://loctvt.blogspot.com/2021/06/flutter-1-flutter-la-gi.html ·        Flutter 1.2 - Flutter Architecture:  https://loctvt.blogspot.com/2021/06/flutter-12-flutter-architecture.html ·        Flutter 1.3 - Flutter & Dart biên dịch sang Native app như thế nào ?   :  https://loctvt.blogspot.com/2021/06/flutter-13-flutter-dart-bien-dich-sang.html ·        Flutter 1.4 -  Lộ trình học Flutter:  https://loctvt.blogspot.com/2021/07/flutter-14-lo-trinh-hoc-flutter.html   ·        Flutter 2.1 - Tổng quan về các file auto generated khi tạo mới project Flutter:  https://loctvt.blogspot.com/2021/07/tong-quan-ve-cac-file-auto-generated.html ·        Flutter 2.2 - Dart Basics:  https://loctvt.blogspot.com/2021/07/dart-basic...

Flutter 2.10 - If else statement, Split widget

 1, If else statement: body: questionIndex < questions . length ? Column ( children: [ Question ( questions [ questionIndex ][ 'questionText' ].toString() , ) , ...( questions [ questionIndex ][ 'answer' ] as List<String>) .map((answer) { return Answer (answerQuestion , answer) ; }).toList() ] , ) : Center (child: Text ( 'You did it' )) , Toán tử ba ngôi :  variable_name = (condition) ? value1 : value2 Nếu condition đúng thì var = value1 nếu sai thì var = value2. Trong đoạn code trên nếu   questionIndex <  questions. length   thì thực thi đoạn code trong block 1 ( từ ? đến :). Ngược lại, thực hiện block 2 (sau :). 2, Split widget: Như đoạn code ở trên, việc đọc code sẽ khó khăn nếu là dự án thực tế. Trong flutter, chúng ta có thể bóc tách các widget to thành các widget nhỏ để dễ quản lý,... (Khuyến khích nên bóc ra các widget nhỏ nếu có th...

Flutter 2.9 - final & const

  final   và   const   đều được dùng để ngăn giá trị của biến thay đổi sau khi khởi tạo. Tuy nhiên, đó là điểm giống nhau duy nhất giữa chúng, và ngay cả điểm chung này cũng có một vài khác biệt. Cùng mình tìm hiểu nhé. Khởi tạo Bạn không phải cung cấp giá trị khởi tạo cho các biến  final , nhưng điều này là bắt buộc với  const //Compiler sẽ báo lỗi và yêu cầu gán giá trị cho name const name; //❌ //Code chạy thành công final name; //✅ Có sự khác nhau này là bởi  const  được dùng cho các biến có giá trị lúc compile. Nói cách khác, khi code được biên dịch để tạo ra app, hệ thống đã phải biết chắc chắn giá trị của biến  const . Đối với biến  final , chỉ cần nó được gán giá trị trước lần sử dụng đầu tiên thì sẽ không có bất cứ vấn đề gì final name; //Sẽ xảy ra lỗi vì name chưa có giá trị print (name); //❌ //Chạy thành công vì name đã được gán giá trị trước lần sử dụng đầu tiên name = "John" print (name); //✅ Cập nhật 1. co...

Flutter 2.8 - Map, List, Callback

Code: main.dart: import 'package:flutter/material.dart' ; import './answer.dart' ; import './question.dart' ; void main () { runApp( MyApp ()) ; } class MyApp extends StatefulWidget { @override State<StatefulWidget> createState () { return MyAppState () ; } } class MyAppState extends State<MyApp> { var questionIndex = 0 ; void answerQuestion () { setState(() { questionIndex = questionIndex + 1 ; }) ; if ( questionIndex <= 3 ) { print( questionIndex ) ; } else { questionIndex = 0 ; print( 'Out of range question?' ) ; } } @override Widget build (BuildContext context) { var questions = [ { 'questionText' : 'What \' s your favorite color ?' , 'answer' : [ 'Black' , 'Red' , 'Blue' , 'Green' ] } , { 'questionText' : 'What \' s your favorite animals ?' , ...