for location files: ../android/app/src/(debug | profile)/AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
path untuk menambahkan API-key di aplikasi flutter : android\app\src\main\AndroidManifest.xml . Ganti "keys_api" dengan kunci API untuk
<application
.....>
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="keys_api"/>
<activity.....
import 'package:flutter/material.dart'; | |
import 'package:flutter_grocery_shopping/counter_bloc.dart'; | |
import 'package:flutter_grocery_shopping/counter_event.dart'; | |
class HomePages extends StatefulWidget { | |
@override | |
_HomePagesState createState() => _HomePagesState(); | |
} | |
class _HomePagesState extends State<HomePages> { |
import 'package:flutter/material.dart'; | |
import 'package:flutter_bloc/flutter_bloc.dart'; | |
import 'package:flutter_grocery_shopping/model.dart'; | |
import 'bloc/bloc.dart'; | |
import 'bloc/weather_bloc.dart'; | |
class WeatherPage extends StatefulWidget { | |
WeatherPage({Key key}) : super(key: key); |
-
initialValue dan controller akan menghasilkan error jika ada di TextFormField yang sama
-
ketika mentimpan menggunakan onSaved TextFormField, jangan lupa menggunakan validator dan mengecek validasi dari TextFOrmFIedl dengan Syntax "formKey.currentstate.validated" dan janga "formKey.currentState.saved" di Buttom
-
Ketika ingin memisahkan widget di kelas / file yang berbeda. Pastikan pada variable VoidCallback tidak perlu menggunakan lambda. contoh: onPressed: callback jangan onPressed: ()=> callback
-
Refresh indicator hanya bisa melakukan refresh di ListView
- provider: ^3.0.0+1 | |
import 'package:flutter/material.dart'; | |
import 'package:flutter_grocery_shopping/application_color.dart'; | |
import 'package:geolocator/geolocator.dart'; | |
import 'package:provider/provider.dart'; | |
class ProvdersApp extends StatelessWidget { | |
@override | |
Widget build(BuildContext context) { |
-
buat model
-
buat function
-
buat widget
-
buat home