Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'dart:convert';
- import 'package:flutter/material.dart';
- import 'package:get/get.dart';
- import 'package:http/http.dart' as http;
- import 'package:weather_app/views/pages/weather_page.dart';
- class HomePage extends StatefulWidget {
- const HomePage({ Key? key }) : super(key: key);
- @override
- _HomePageState createState() => _HomePageState();
- }
- class _HomePageState extends State<HomePage> {
- static const String _urlRegion = 'https://emsifa.github.io/api-wilayah-indonesia/api/';
- String? _valProvince;
- String? _valCity;
- List<dynamic> _dataProvince = [];
- List<dynamic> _dataCity = [];
- Future<void> getProvince() async {
- final response = await http.get(Uri.parse('${_urlRegion}provinces.json')); //untuk melakukan request ke webservice
- var listData = jsonDecode(response.body);
- setState(() {
- _dataProvince = listData;
- });
- }
- Future<void> getCity(String idProvince)async{
- final response = await http.get(Uri.parse('${_urlRegion}regencies/$idProvince.json'));
- var listData = jsonDecode(response.body);
- setState(() {
- _dataCity = listData;
- });
- }
- @override
- void initState() {
- super.initState();
- getProvince();
- }
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(
- title: const Text("Dropdown Bercabang"),
- ),
- body: Padding(
- padding: const EdgeInsets.all(16.0),
- child: Column(
- mainAxisAlignment: MainAxisAlignment.start,
- children: <Widget>[
- const Text("Silahkan pilih provinsi tujuan"),
- DropdownButton(
- hint: const Text("Select Province"),
- value: _valProvince,
- items: _dataProvince.map((item){
- return DropdownMenuItem(
- child: Text(item['name']),
- value: item['id'],
- );
- }).toList(),
- onChanged: (value) {
- setState(() {
- _valProvince = value.toString() ;
- _valCity = null;
- });
- getCity(value.toString());
- },
- ),
- const Text("Silahkan pilih kota tujuan"),
- DropdownButton(
- hint: const Text("Select City"),
- value: _valCity,
- items: _dataCity.map((item){
- return DropdownMenuItem(
- child: Text(item['name']),
- value: item['name'],
- );
- }).toList(),
- onChanged: (value) {
- setState(() {
- _valCity = value.toString();
- });
- },
- ),
- ElevatedButton(
- onPressed: () => Get.to(() => WeatherPage(city: _valCity?.split(" ").sublist(1, 2).join(" ").toLowerCase() ?? '')),
- child: const Text('Halaman Utama'))
- ],
- ),
- ),
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement