@cerrato: Jeśli chodzi o Flutter, brak wsparcie dla 3D i pisanie masy kodu by stworzyć nawet najprostszą aplikację. Ja bym rzucił monetą, który język się uczyć i zabrał się za Kotlina
Nie jest to prawda. Jest odwrotnie, to natywne api Androida wymusza pisanie rozwlekłego kodu w wielu klasach i plikach xml. Prosty przykład:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _MyAppState();
}
}
class _MyAppState extends State<MyApp> {
List<String> _products = ['Laptop'];
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(primarySwatch: Colors.deepPurple),
home: Scaffold(
appBar: AppBar(title: Text('Long List App')),
body: Column(children: [
Container(
margin: EdgeInsets.all(10.0),
child: RaisedButton(
color: Theme.of(context).primaryColor,
splashColor: Colors.blueGrey,
textColor: Colors.white,
onPressed: () {
setState(() {
_products.add('Macbook');
});
},
child: Text('Add Laptops'))),
Column(
children: _products
.map((element) => Card(
child: Column(
children: <Widget>[
Image.asset('assets/macbook.jpg'),
Text(element,
style: TextStyle(color: Colors.deepPurple))
],
),
))
.toList()),
]),
),
);
}
}
Efekt działania programu:
To jest już CAŁY potrzebny kod. Lista z niestandardowymi itemami, załadowana dawnymi z przykładowej kolekcji. Napisz teraz to samo w Kotlinie i niech to będzie krótsze i bardziej zwięzłe.
Jeszcze zabawniej się zrobi, jak dodamy tu jakieś rzeczy, które mają wykonywać się asynchronicznie. Albo jakieś niestandardowe kontrolki, np niech obrazek będzie przycięty do kształtu okręgu. To Kotlin daje trochę lukru składniowego w porównaniu z Javą, ale dalej to jest rozwlekłe api Androida