Я новичок в вибрации и пытаюсь разработать свое первое приложение.
Я провел много исследований и не смог найти ответ на свой вопрос.
Я ищу информацию об адресе, районе и городе через почтовый индекс с помощью API.
Я храню эти данные в переменных, и мне бы хотелось, чтобы при нажатии на кнопку для поиска этой информации Возврат будет происходить в TextField, а не в тексте, как сейчас в моем коде.
Эта информация, которую я привожу во время регистрации пользователя, и я хотел бы привести ее в стандартном формате.
Вот мой код ...
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
class cadastro extends StatefulWidget {
@override
_cadastroState createState() => _cadastroState();
}
class _cadastroState extends State<cadastro> {
String _logradouro = "";
String _localidade = "";
String _bairro = "";
TextEditingController _controllerCep = TextEditingController();
_recuperarCep() async {
String cepDigitado = _controllerCep.text;
String url = "http://viacep.com.br/ws/${cepDigitado}/json/";
http.Response response;
response = await http.get(url);
Map<String, dynamic> retorno = json.decode(response.body);
String logradouro = retorno["logradouro"];
String bairro = retorno["bairro"];
String localidade = retorno["localidade"];
setState(() {
_logradouro = "${logradouro}";
_localidade = "${localidade}";
_bairro = "${bairro}";
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: Container(
width: double.infinity,
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
"Cep",
style: (TextStyle(
color: Color(0xff4f4138),
fontSize: 20,
)),
),
Padding(
padding: EdgeInsets.only(right: 20),
child: RaisedButton(
color: Color(0xffffdb2e),
textColor: Color(0xff4f4138),
padding: EdgeInsets.all(15),
child: Text(
"Buscar",
style: TextStyle(
fontSize: 20,
),
),
onPressed: _recuperarCep,
),
)
],
),
),
Padding(
padding: EdgeInsets.only(left: 20, right: 20, bottom: 20),
child: TextField(
maxLength: 8,
keyboardType: TextInputType.number,
style: TextStyle(
color: Color(0xff4f4138),
fontSize: 20,
),
decoration: InputDecoration(
fillColor: Color(0xff4f4138),
),
controller: _controllerCep,
),
),
Padding(
padding: EdgeInsets.only(left: 20, bottom: 30, top: 30),
child: Text(
"Logradouro: " + _logradouro,
style: (TextStyle(
color: Color(0xff4f4138),
fontSize: 20,
)),
),
),
Padding(
padding:
EdgeInsets.only(left: 20, right: 20, bottom: 20, top: 20),
child: Text(
"Bairro: " + _bairro,
style: (TextStyle(
color: Color(0xff4f4138),
fontSize: 20,
)),
),
),
Padding(
padding:
EdgeInsets.only(left: 20, right: 20, bottom: 30, top: 20),
child: Text(
"Cidade: " + _localidade,
style: (TextStyle(
color: Color(0xff4f4138),
fontSize: 20,
)),
),
),
],
),
),
));
}
}