Flutter: SDK viết mobile app cho Android và iOS của Google
Ngôn ngữ Dart
Dart là ngôn ngữ được Google phát triển, tham vọng là sẽ thay thế Javascript. Nói chung không biết thay thế được không nhưng cũng khá hứa hẹn. Bời vì Javascript giờ bá quá, cái gì cũng làm được. Mà cái gì cũng làm được đâm ra lại không tốt.
Mấy anh kĩ sư Google không thích Javascript nên quyết tâm phát triển Dart. Thật ra mình cũng mới nhìn sơ qua code của Dart chứ chưa code thử luôn. Một nhận xét là khá giống Javascript :))
Anh em vào đây test thử ngôn ngữ Đát tờ nha: https://dartpad.dartlang.org/
Trên trang chủ của Dart, bạn sẽ thấy dòng quảng cáo sau:
Ám chỉ ai thì bạn biết rồi đó.
Dart ngon hay dở thì tương lai sẽ trả lời. Còn hiện tại, muốn cạnh với Javascript thì phải ít nhất làm được những gì Javascript có thể làm. Front end thì Dart làm được rồi ( một phần nào thôi ), giờ tới cross platform cho mobile app. Ai cũng biết React Native, Ionic giờ đang phổ biến. Do đó Google cũng ra Flutter để cạnh tranh, đương nhiên là code bằng Dart rồi.
Giới thiệu Flutter
Không liên quan nhưng tiếng Anh flutter là vỗ cánh ( làm nhớ đến Swift là tên chim, mấy anh này thích đặt tên chim chóc quá ha ).
Hot reload
Tương tự như React Native, Flutter cũng có hot reload. Viết code rồi save lại khỏi chạy cũng thấy được sự thay đổi nên build UI sẽ nhanh hơn
Reactive programming
Cũng kiểu setState() sẽ chạy lại hàm build() ( bên React Native là hàm render() )
class CounterState extends State<Counter> { int counter = 0;
void increment() { // Tells the Flutter framework that state has changed, // so the framework can run build() and update the display. setState(() { counter++; }); }
Widget build(BuildContext context) { // This method is rerun every time setState is called. // The Flutter framework has been optimized to make rerunning // build methods fast, so that you can just rebuild anything that // needs updating rather than having to individually change // instances of widgets. return new Row( children: <Widget>[ new RaisedButton( onPressed: increment, child: new Text('Increment'), ), new Text('Count: $counter'), ], ); } }
Widget
Bên RN được xây dựng theo Component, còn Flutter thì có khái niệm 'mới' là widget. Chắc cũng sẽ sinh ra cái gì đó giống Redux thôi :))
Native features
Flutter cũng có thể truy cập cái API của native. Ví dụ dưới đây là code lấy % pin của máy:
Future<Null> getBatteryLevel() async { var batteryLevel = 'unknown'; try { int result = await methodChannel.invokeMethod('getBatteryLevel'); batteryLevel = 'Battery level: $result%'; } on PlatformException { batteryLevel = 'Failed to get battery level.'; } setState(() { _batteryLevel = batteryLevel; }); }
Kết
Hiện tại Flutter mới ra bản alpha. Nếu đem so sánh với React Native thì không công bằng đúng không. Nhưng theo mình thấy hiện tại thì Flutter không ngon như những gì quảng cáo. Cộng đồng ít, document viết cũng không ngon như React Native. Tuy nhiên nếu bạn muốn dẫn đầu xu hướng, là người tiên phong thì nên học và làm thử Dart với Flutter nhé. Lúc mình viết về React Native hay Kotlin đều chưa hot, giờ khá hot rồi nè. Biết đâu sau này bạn là chuyên gia Dart tại Việt Nam thì sao?