Kami melanjutkan interpretasi singkat dari
dokumentasi Flutter resmi dalam format tanya-jawab. Ini adalah bagian ketiga, dan akan lebih berguna untuk Bereaksi pengembang asli. Dalam interpretasi ini, Anda dapat menemukan jawaban untuk pertanyaan yang sering diajukan, serta menentukan sendiri berapa banyak upaya yang perlu Anda lakukan untuk beralih dari satu kerangka kerja lintas platform ke yang lain.

Jika informasi ini tidak cukup atau Anda memiliki pengalaman dalam pengembangan asli untuk platform tertentu, maka saya sarankan untuk melihat bagian lain:
Bergetar. Bagian 1. Untuk pengembang AndroidBergetar. Bagian 2. Untuk pengembang iOSBergetar. Bagian 3. Untuk Pengembang Asli BereaksiBergetar. Bagian 4. Untuk Pengembang Web
Bergetar. Bagian 5. Untuk Pengembang Xamarin
Konten:
- Sedikit tentang Dart
- Dasar-dasarnya
- Struktur dan Sumber Daya Proyek
- Tampilan
- Tata letak
- Stilisasi
- Manajemen negara
- Penyimpanan lokal
- Navigasi
- Gerakan dan penanganan acara sentuh
- Permintaan HTTP
- Formulir input
- Kode khusus platform
- Debugging
- Animasi
- Komponen Setara
- Flutter Plugins
Sedikit tentang Dart
Pertanyaan:
Di mana titik masuknya?
Jawabannya adalah:
Fungsi
main()
.
Perbedaan:
JavaScript tidak memiliki titik masuk yang telah ditentukan; JavaScript dapat berupa fungsi apa pun yang ditentukan oleh pengembang. Di Dart, ini hanya
main()
.
Pertanyaan:
Bagaimana cara output ke konsol?
Jawabannya adalah:
Menggunakan fungsi
print()
.
Perbedaan:
Dalam JavaScript, output konsol dilakukan menggunakan
console.log()
.
Contoh:
print('Hello world!');
Pertanyaan:
Bagaimana cara membuat dan menetapkan variabel / bidang?
Jawabannya adalah:
Dart mendukung pengetikan yang dinamis dan kuat. Oleh karena itu, variabel / bidang dapat dibuat dalam semua jenis pengetikan yang sesuai untuk Anda. Penugasan terjadi melalui tunggal =.
Perbedaan:
Pengetikan yang kuat tidak didukung dalam JavaScript.
Informasi tambahan:
Lebih detail di sini.Contoh:
String name = 'dart';
Pertanyaan:
Berapa nilai default suatu variabel / bidang?
Jawabannya adalah:
null
Perbedaan:
JavaScript tidak
undefined
secara default.
Informasi tambahan:
Lebih detail di sini.Pertanyaan:
Bagaimana cara memeriksa nilai untuk
null
atau 0?
Jawabannya adalah:
Menggunakan verifikasi eksplisit
==
.
Perbedaan:
Dalam JavaScript, sebagai bagian dari centang
if
, angka 1 atau objek
non-null
akan sama dengan
true
. Di Dart, hanya nilai boolean dari
true
setara dengan
true
.
Contoh:
var myNull = null; if (myNull == null) { print('use "== null" to check null'); } var zero = 0; if (zero == 0) { print('use "== 0" to check zero'); }
Pertanyaan:
Bagaimana cara mendeklarasikan fungsi?
Jawabannya adalah:
Di Dart, fungsi, seperti bidang, bisa dengan pengetikan dinamis atau nilai pengembalian yang kuat. Diketik secara dinamis dideklarasikan hanya dengan nama fungsi dan secara opsional oleh parameter, sedangkan yang sangat diketik di awal masih memiliki tipe kembali.
Perbedaan:
Dalam JavaScript, suatu fungsi dideklarasikan dengan
function
kata kunci, diikuti oleh nama dan parameter opsional.
Informasi tambahan:
Lebih detail di sini.Contoh:
fn() { return true; }
Pertanyaan:
Apa yang setara dengan
Janji ?
Jawabannya adalah:
Masa depanInformasi tambahan:
Dart, seperti JavaScript, mendukung eksekusi satu utas.
Future in Dart memiliki arti yang sama dengan
Promise in React Native.
Lebih detail di sini. .
Contoh:
import 'dart:convert'; import 'package:http/http.dart' as http; class Example { Future<String> _getIPAddress() { final url = 'https://httpbin.org/ip'; return http.get(url).then((response) { String ip = jsonDecode(response.body)['origin']; return ip; }); } } main() { final example = new Example(); example ._getIPAddress() .then((ip) => print(ip)) .catchError((error) => print(error)); }
Pertanyaan:
Apa analog dari
async
dan
await
?
Jawabannya adalah:
async
dan
await
Perbedaan:
Dalam JavaScript, fungsi async mengembalikan
Promise , di Dart, mereka mengembalikan
Future . menunggu dengan sinkron mengharapkan hasil memanggil fungsi async.
Informasi tambahan:
Lebih detail di sini.Contoh:
import 'dart:convert'; import 'package:http/http.dart' as http; class Example { Future<String> _getIPAddress() async { final url = 'https://httpbin.org/ip'; final response = await http.get(url); String ip = jsonDecode(response.body)['origin']; return ip; } } main() async { final example = new Example(); try { final ip = await example._getIPAddress(); print(ip); } catch (error) { print(error); } }
Dasar-dasarnya
Pertanyaan:
Bagaimana cara membuat proyek aplikasi di Flutter?
Jawabannya adalah:
- Menggunakan IDE dengan plugin Flutter dan Dart diinstal.
- Menggunakan perintah
flutter create {projectname}
.
Perbedaan:
Untuk membuat proyek di React Native, gunakan perintah
create-react-native-app {projectname}
.
Informasi tambahan:
Lebih detail di sini.Pertanyaan:
Bagaimana cara memulai aplikasi?
Jawabannya adalah:
- Menggunakan fungsi jalankan di IDE dengan plugin Flutter dan Dart diinstal.
- Menggunakan perintah
flutter run
.
Perbedaan:
React Native menggunakan
npm run
atau
yarn run
untuk meluncurkan aplikasi.
Pertanyaan:
Bagaimana cara mengimpor widget?
Jawabannya adalah:
Di Flutter, semua widget dipecah menjadi beberapa paket, jadi mengimpor paket cukup untuk menggunakan widgetnya.
Perbedaan:
Di Bereaksi Asli, Anda perlu mengimpor setiap widget.
Contoh:
import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter/my_widgets.dart';
Pertanyaan:
Bagaimana cara menggunakan widget dan bersarang untuk membangun pohon widget?
Jawabannya adalah:
Di Flutter, hampir semuanya adalah widget. Bahkan objek aplikasi adalah widget. Setiap widget dapat bersarang di induknya. Dengan menggabungkan widget, Anda membangun hierarki yang disebut pohon widget. Dialah yang kemudian berubah menjadi tampilan di layar.
Contoh:
import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Welcome to Flutter', home: Scaffold( appBar: AppBar( title: Text('Welcome to Flutter'), ), body: Center( child: Text('Hello world'), ), ), ); } }
Pertanyaan:
Bagaimana cara membuat komponen yang dapat digunakan kembali?
Jawabannya adalah:
Di Flutter, Anda dapat membuat kelas widget dan menggunakannya kembali. Parameter yang digunakan adalah bidang kelas.
Perbedaan:
Di Bereaksi Asli, untuk mengubah parameter elemen yang digunakan kembali, Anda harus menandainya sebagai alat peraga.
Informasi tambahan:
Parameter dalam konstruktor dapat dideklarasikan dalam dua cara: dengan penghitungan reguler dan opsional, menggunakan kurung kurawal
{}
. Perbedaan terjadi ketika menggunakan parameter untuk memanggil konstruktor.
Dalam pencacahan biasa, semua parameter diperlukan, dan saat memanggil konstruktor, Anda tidak dapat menentukan parameter tertentu yang dilewati, karena itu karena pesanan.
Dengan opsional, Anda dapat menggunakan urutan apa pun di mana parameter dikirimkan, tetapi Anda harus menentukan parameter spesifik mana yang dikirim atau tidak untuk mengirimnya sama sekali. Untuk menandai parameter opsional sebagaimana diperlukan, gunakan anotasi
@required
.
Contoh:
class CustomCard extends StatelessWidget { CustomCard({@required this.index, @required this.onPress}); final index; final Function onPress; @override Widget build(BuildContext context) { return Card( child: Column( children: <Widget>[ Text('Card $index'), FlatButton( child: const Text('Press'), onPressed: this.onPress, ), ], ) ); } } ...
Struktur dan Sumber Daya Proyek
Pertanyaan:
Di mana harus mulai menulis kode?
Jawabannya adalah:
Di
{projectname}/lib/main.dart
.
Pertanyaan:
Apa struktur file dalam proyek Flutter?
Jawabannya adalah:
┬ └ projectname ┬ ├ android - Android . ├ build - iOS Android . ├ ios - iOS . ├ lib - Dart . ┬ └ src - Contains additional source files. └ main.dart - . ├ test - . └ pubspec.yaml - . package.json React Native.
Pertanyaan:
Di mana menyimpan sumber daya dan aset dan bagaimana menggunakannya?
Jawabannya adalah:
Tautan ke sumber daya dan dependensi proyek disimpan dalam file
pubspec.yaml
. Bahkan, Anda dapat menempatkannya di folder apa pun di dalam
lib
, yang paling penting, tentukan path ke mereka di
pubspec.yaml
. Anda dapat menggunakannya dalam proyek baik menggunakan widget khusus, misalnya
AssetImage , atau langsung menggunakan
AssetBundle .
Informasi tambahan:
Lebih detail di sini.Contoh:
Mendeklarasikan aset di
pubspec.yaml
flutter: assets: - assets/my_icon.png - assets/background.png
Gunakan dalam kode
image: AssetImage('assets/background.png'),
Pertanyaan:
Bagaimana cara mengunduh gambar dari jaringan?
Jawabannya adalah:
Menggunakan
Image.network .
Contoh:
body: Image.network( 'https://flutter.io/images/owl.jpg',
Pertanyaan:
Bagaimana cara menghubungkan paket dan plugin pihak ketiga?
Jawabannya adalah:
Menggunakan
dependencies
di
pubspec.yaml
.
Perbedaan:
Bereaksi Asli menggunakan
yarn add {package-name}
atau
npm install --save {package-name}
perintah untuk menambahkan dependensi.
Informasi tambahan:
Menggunakan PaketPengembangan paket dan pluginPlugin populer untuk FlutterContoh:
dependencies: flutter: sdk: flutter google_sign_in: ^3.0.3
Tampilan
Pertanyaan:
Apa yang setara dengan wadah
Tampilan ?
Jawabannya adalah:
Semua widget dasar untuk tata letak, misalnya
Wadah ,
Kolom ,
Baris , dan
Tengah .
Informasi tambahan:
Lebih detail di sini.Pertanyaan:
Apa yang dimaksud dengan analog dari
FlatList atau
SelectionList ?
Jawabannya adalah:
Tampilan daftarContoh:
var data = [ ... ]; ListView.builder( itemCount: data.length, itemBuilder: (context, int index) { return Text( data[index], ); }, )
Pertanyaan:
Bagaimana cara menggunakan Canvas?
Jawabannya adalah:
Menggunakan kelas
CustomPaint dan
CustomPainter .
Perbedaan:
Di Bereaksi Asli, tidak ada cara untuk menggambar menggunakan Kanvas di luar kotak. Ada plugin pihak ketiga, misalnya
react-native-canvas
.
Contoh:
class MyCanvasPainter extends CustomPainter { @override void paint(Canvas canvas, Size size) { Paint paint = Paint(); paint.color = Colors.amber; canvas.drawCircle(Offset(100.0, 200.0), 40.0, paint); Paint paintRect = Paint(); paintRect.color = Colors.lightBlue; Rect rect = Rect.fromPoints(Offset(150.0, 300.0), Offset(300.0, 400.0)); canvas.drawRect(rect, paintRect); } bool shouldRepaint(MyCanvasPainter oldDelegate) => false; bool shouldRebuildSemantics(MyCanvasPainter oldDelegate) => false; } class _MyCanvasState extends State<MyCanvas> { @override Widget build(BuildContext context) { return Scaffold( body: CustomPaint( painter: MyCanvasPainter(), ), ); } }
Tata letak
Pertanyaan:
Bagaimana cara menggunakan widget untuk menggambarkan properti tata letak?
Jawabannya adalah:
Flutter menggunakan widget khusus untuk properti tata letak, misalnya:
Kolom ,
Baris ,
Padding ,
Align ,
Stack .
Perbedaan:
Dalam Bereaksi Asli, properti tata letak yang paling sering dapat diatur menggunakan
props
.
Informasi tambahan:
Daftar lengkap widgetPertanyaan:
Bagaimana cara memposisikan widget dalam tata letak?
Jawabannya adalah:
Untuk penentuan posisi absolut, gunakan widget
Stack . Untuk relatif - berbagai widget dan kombinasinya, dapat ditemukan di
sini .
Contoh:
Stack( alignment: const Alignment(0.6, 0.6), children: <Widget>[ CircleAvatar( backgroundImage: NetworkImage( 'https://avatars3.githubusercontent.com/u/14101776?v=4'), ), Container( decoration: BoxDecoration( color: Colors.black45, ), child: Text('Flutter'), ), ], )
Stilisasi
Pertanyaan:
Bagaimana cara mendesain komponen?
Jawabannya adalah:
Paling sering, widget memiliki properti
style
.
Perbedaan:
Bereaksi Asli menggunakan
stylesheets.create
untuk penataan.
Contoh:
var textStyle = TextStyle(fontSize: 32.0, color: Colors.cyan, fontWeight: FontWeight.w600); ... Center( child: Column( children: <Widget>[ Text( 'Sample text', style: textStyle, ), Padding( padding: EdgeInsets.all(20.0), child: Icon(Icons.lightbulb_outline, size: 48.0, color: Colors.redAccent) ), ], ), )
Pertanyaan:
Bagaimana cara menggunakan ikon dan warna?
Jawabannya adalah:
Menggunakan kelas
Ikon dan
Warna .
Perbedaan:
Bereaksi Asli tidak memiliki ikon dukungan di luar kotak.
Contoh:
Ikon
Icon(Icons.lightbulb_outline, color: Colors.redAccent)
Warna
class SampleApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Sample App', theme: ThemeData( primarySwatch: Colors.blue, textSelectionColor: Colors.red ), home: SampleAppPage(), ); } }
Pertanyaan:
Bagaimana cara menyesuaikan tema gaya aplikasi?
Jawabannya adalah:
Menggunakan kelas
ThemeData .
Perbedaan:
Dalam Bereaksi Asli, tema umum dikonfigurasi melalui
stylesheets
.
Contoh:
@override Widget build(BuildContext context) { return Theme( data: ThemeData( primaryColor: Colors.cyan, brightness: brightness, ), child: Scaffold( backgroundColor: Theme.of(context).primaryColor, ... ... ), ); }
Manajemen negara
Pertanyaan:
Bagaimana cara memperbarui tampilan widget?
Jawabannya adalah:
Menggunakan
StatefulWidget dan
State -nya. Flutter memiliki 2 jenis widget:
StatelessWidget dan
StatefulWidget . Mereka bekerja dengan cara yang sama, satu-satunya perbedaan adalah dalam kondisi rendering.
Perbedaan:
StatelessWidget memiliki status yang tidak dapat diubah. Cocok untuk menampilkan teks, logo, dll. Yaitu jika elemen pada layar tidak boleh berubah selama seluruh waktu tampilan, maka itu cocok untuk Anda. Ini juga dapat digunakan sebagai wadah untuk widget stateful.
StatefulWidget memiliki status
Negara , yang menyimpan informasi tentang keadaan saat ini. Jika Anda ingin mengubah elemen di layar saat melakukan beberapa tindakan (respons datang dari server, pengguna mengklik tombol, dll.) - ini adalah pilihan Anda.
Contoh:
1) StatelessWidget - Teks
Text( 'I like Flutter!', style: TextStyle(fontWeight: FontWeight.bold), );
2) StatefulWidget - ketika Anda mengklik tombol (FloatingActionButton), teks dalam widget Teks berubah dari
I Like Flutter ke
Flutter is Awesome! import 'package:flutter/material.dart'; void main() { runApp(SampleApp()); } class SampleApp extends StatelessWidget {
Penyimpanan lokal
Pertanyaan:
Bagaimana cara menyimpan data
key-value
dalam suatu aplikasi?
Jawabannya adalah:
Menggunakan plugin
shared_preferences .
Perbedaan:
Bereaksi Asli menggunakan
AsyncStorage .
Contoh:
Kecanduan
dependencies: flutter: sdk: flutter shared_preferences: ^0.4.3
Gunakan
SharedPreferences prefs = await SharedPreferences.getInstance(); _counter = prefs.getInt('counter'); prefs.setInt('counter', ++_counter); setState(() { _counter = _counter; });
Pertanyaan:
Bagaimana cara menyimpan data yang kompleks?
Jawabannya adalah:
Menggunakan plugin basis data, mis.
Sqflite atau
sarang .
Navigasi
Pertanyaan:
Bagaimana cara menavigasi antar layar?
Jawabannya adalah:
Menavigasi antar layar menggunakan kelas
Navigator dan
Rute .
Perbedaan:
Bereaksi Asli menggunakan
StackNavigator ,
TabNavigator, dan
DrawerNavigator .
Flutter memiliki dua metode navigasi:
- Jelaskan Peta dengan nama Rute
- Navigasi langsung ke Rute .
Navigator dapat melakukan
push () atau
pop () ke rute yang Anda tentukan.
Contoh:
void main() { runApp(CupertinoApp( home: MyAppHome(),
Pertanyaan:
Bagaimana cara menggunakan navigasi tab?
Jawabannya adalah:
Menggunakan kelas:
TabController ,
TabBar ,
Tab, dan
TabBarView .
Perbedaan:
Bereaksi Asli menggunakan
createBottomTabNavigator dan TabNavigation .
Informasi tambahan:
Lebih detail di sini. .
Contoh:
class _NavigationHomePageState extends State<NavigationHomePage> with SingleTickerProviderStateMixin { TabController controller=TabController(length: 2, vsync: this); @override Widget build(BuildContext context) { return Scaffold( bottomNavigationBar: Material ( child: TabBar( tabs: <Tab> [ Tab(icon: Icon(Icons.person),) Tab(icon: Icon(Icons.email),), ], controller: controller, ), color: Colors.blue, ), body: TabBarView( children: <Widget> [ home.homeScreen(), tabScreen.tabScreen() ], controller: controller, ) ); } }
Pertanyaan:
Bagaimana cara menggunakan navigasi laci?
Jawabannya adalah:
Menggunakan kelas
Drawer .
Perbedaan:
Bereaksi Asli menggunakan
createDrawerNavigator dan DrawerNavigation .
Contoh:
@override Widget build(BuildContext context) { return Scaffold( drawer: Drawer( child: ListTile( leading: Icon(Icons.change_history), title: Text('Screen2'), onTap: () { Navigator.of(context).pushNamed('/b'); }, ), elevation: 20.0, ), appBar: AppBar( title: Text('Home'), ), body: Container(), ); }
Gerakan dan penanganan acara sentuh
Pertanyaan:
Bagaimana cara menangani klik?
Jawabannya adalah:
Jika widget mendukung klik, maka dalam
onPressed()
. Jika tidak, gunakan widget
GestureDetector .
Perbedaan:
React Native menggunakan
PanResponder atau
Touchable untuk ini.
Contoh:
GestureDetector( child: Scaffold( appBar: AppBar( title: Text('Gestures'), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text('Tap, Long Press, Swipe Horizontally or Vertically '), ], ) ), ), onTap: () { print('Tapped'); }, onLongPress: () { print('Long Pressed'); }, onVerticalDragEnd: (DragEndDetails value) { print('Swiped Vertically'); }, onHorizontalDragEnd: (DragEndDetails value) { print('Swiped Horizontally'); }, );
Permintaan HTTP
Pertanyaan:
Bagaimana cara mendapatkan data dari permintaan API?
Jawabannya adalah:
Menggunakan
plugin http .
Perbedaan:
Bereaksi Asli menggunakan
fetch API
.
Contoh:
Koneksi plugin
dependencies: flutter: sdk: flutter http: <latest_version>
Pengambilan data
final url = Uri.https('httpbin.org', 'ip'); final httpClient = HttpClient(); _getIPAddress() async { var request = await httpClient.getUrl(url); var response = await request.close(); var responseBody = await response.transform(utf8.decoder).join(); String ip = jsonDecode(responseBody)['origin']; setState(() { _ipAddress = ip; }); }
Formulir input
Pertanyaan:
Widget apa yang digunakan untuk input?
Jawabannya adalah:
TextField bersama dengan
TextEditingController atau
TextFormField .
Perbedaan:
Bereaksi Asli menggunakan
TextInput .
TextFormField berbeda dari
TextField dalam validasi dan logika bawaannya untuk menyimpan nilai dalam bidang.
Contoh:
Bidang teks
final TextEditingController _controller = TextEditingController(); ... TextField( controller: _controller, decoration: InputDecoration( hintText: 'Type something', labelText: 'Text Field ' ), ), RaisedButton( child: Text('Submit'), onPressed: () { showDialog( context: context, child: AlertDialog( title: Text('Alert'), content: Text('You typed ${_controller.text}'), ), ); }, ), )
TextFormField
final formKey = GlobalKey<FormState>(); ... Form( key:formKey, child: Column( children: <Widget>[ TextFormField( validator: (value) => !value.contains('@') ? 'Not a valid email.' : null, onSaved: (val) => _email = val, decoration: const InputDecoration( hintText: 'Enter your email', labelText: 'Email', ), ), RaisedButton( onPressed: _submit, child: Text('Login'), ), ], ), ) void _submit() { final form = formKey.currentState; if (form.validate()) { form.save(); showDialog( context: context, child: AlertDialog( title: Text('Alert'), content: Text('Email: $_email, password: $_password'), ) ); } }
Kode khusus platform
Pertanyaan:
Bagaimana cara menentukan platform yang menjalankan kode?
Jawabannya adalah:
Menggunakan kelas bidang
platform
di
Tema atau kelas
Platform .
Contoh:
Bidang platform
if (Theme.of(context).platform == TargetPlatform.iOS) { return 'iOS'; } else if (Theme.of(context).platform == TargetPlatform.android) { return 'android'; } else if (Theme.of(context).platform == TargetPlatform.fuchsia) { return 'fuchsia'; } else { return 'not recognised '; }
Kelas Platform
if (Platform.isIOS) { return 'iOS'; } else if (Platform.isAndroid) { return 'android'; } else if (Platform.isFuchsia) { return 'fuchsia'; } else { return 'not recognised '; }
Pertanyaan:
Bagaimana cara memanggil kode platform asli?
Jawabannya adalah:
Melalui
MethodChannel .
Informasi tambahan:
Lebih detail di sini. .
Debugging
Pertanyaan:
Apa alat untuk debugging aplikasi?
Jawabannya adalah:
DevToolsPertanyaan:
Bagaimana cara melakukan
hot reload
?
Jawabannya adalah:
Jika aplikasi diluncurkan dari IntelliJ IDE atau Android Studio, maka
⌘s/ctrl-s
atau mengklik ikon
hot reload
. Jika dimulai dari terminal, maka dengan memasukkan huruf
r
.
Perbedaan:
Bereaksi Asli menggunakan
⌘R/Ctrl+R
untuk emulator iOS, double
R
untuk Android.
Pertanyaan:
Bagaimana cara mengakses menu pengembang di aplikasi?
Jawabannya adalah:
Jika peluncuran berasal dari IDE, maka gunakan alat IDE. Jika dari konsol, gunakan h.
Perbedaan:
Bereaksi Asli menggunakan
⌘D/Ctrl+D
untuk emulator iOS dan
⌘M/Ctrl+M
untuk Android.
Informasi tambahan:
Daftar lengkap tim
Animasi
Pertanyaan:
Apa yang digunakan untuk animasi?
Jawabannya adalah:
Animasi dan
AnimationController .
Perbedaan:
Bereaksi Asli menggunakan
Animation API
.
Informasi tambahan:
Lebih detail di sini.Pertanyaan:
Bagaimana cara menambahkan animasi
fade-in
sederhana?
Jawabannya adalah:
Menggunakan
FadeTransition .
Contoh:
import 'package:flutter/material.dart'; void main() { runApp(Center(child: LogoFade())); } class LogoFade extends StatefulWidget { _LogoFadeState createState() => _LogoFadeState(); } class _LogoFadeState extends State<LogoFade> with TickerProviderStateMixin { Animation animation; AnimationController controller; initState() { super.initState(); controller = AnimationController( duration: const Duration(milliseconds: 3000), vsync: this); final CurvedAnimation curve = CurvedAnimation(parent: controller, curve: Curves.easeIn); animation = Tween(begin: 0.0, end: 1.0).animate(curve); controller.forward(); } Widget build(BuildContext context) { return FadeTransition( opacity: animation, child: Container( height: 300.0, width: 300.0, child: FlutterLogo(), ), ); } dispose() { controller.dispose(); super.dispose(); } }
Pertanyaan:
Bagaimana cara menambahkan animasi gesek ke daftar item?
Jawabannya adalah:
Menggunakan
Dismissible .
Contoh:
child: Dismissible( key: key, onDismissed: (DismissDirection dir) { cards.removeLast(); }, child: Container( ... ), ),
Komponen Setara
Pertanyaan:
Apa yang setara dengan Flutter dibandingkan dengan React Native?
Jawabannya adalah:
Flutter Plugins
Pertanyaan:
Bagaimana cara mengakses GPS?
Jawabannya adalah:
Menggunakan plugin
geolocator .
Pertanyaan:
Bagaimana cara mengakses kamera?
Jawabannya adalah:
Menggunakan plugin
image_picker .
Pertanyaan:
Bagaimana cara masuk melalui Facebook?
Jawabannya adalah:
Menggunakan plugin
flutter_facebook_login .
Pertanyaan:
Bagaimana cara menggunakan firebase?
Jawabannya adalah:
Firebase mendukung
plugin Flutter pihak pertama :
Ini mungkin jawaban untuk pertanyaan dasar. Saya harap interpretasi saya bermanfaat bagi Anda, dan jika Anda belum menulis di Flutter, maka setidaknya pikirkanlah. Ini berarti bahwa mungkin ada tambahan pada rak pengembang Flutter, dan bersama-sama kita akan membuat dunia menjadi tempat yang lebih baik melalui prisma aplikasi yang dikembangkan dengan mudah dan cepat! Ya Bereaksi tidak akan merusak Asli Anda!