untuk code di flutter masih sama dengan tahap 1, namun dengan tambahan bisa mengakses HTTP, untuk code lengkapnya seperti berikut :
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'welcome.dart';
class Login extends StatefulWidget {
@override
_Login createState() => _Login();
}
class _Login extends State<Login> {
TextEditingController _usernameController =
TextEditingController(text: "admin");
TextEditingController _passwordController =
TextEditingController(text: "admin");
Future<void> postDataToApi(String username, String password) async {
// URL endpoint API
String apiUrl =
'http://192.168.43.227/contohAPI/login.php'; // Ganti dengan URL API Anda
// Data yang akan dikirimkan ke API
Map<String, String> body = {
'username': _usernameController.text,
'password': _passwordController.text,
};
try {
// Kirim permintaan POST ke API
var response = await http.post(
Uri.parse(apiUrl),
body: body,
);
// Periksa kode status respons
if (response.statusCode == 200) {
// Jika berhasil, lakukan sesuatu
print('Data berhasil terkirim ke API');
print('Response: ${response.body}');
Map<String, dynamic> responseMap = json.decode(response.body);
String status = responseMap['status'];
print('Status: $status');
print("selesai");
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('Ini adalah pesan sementara'),
duration: Duration(seconds: 3),
),
);
//navigateToSecondPage(context);
Navigator.push(
context,
MaterialPageRoute(builder: (context) => Welcome()),
);
} else {
// Jika gagal, tampilkan pesan kesalahan
print(
'Gagal mengirim data ke API. Status code: ${response.statusCode}');
}
} catch (e) {
// Tangani kesalahan jika terjadi
print('Terjadi kesalahan: $e');
}
}
// Fungsi untuk berpindah ke halaman kedua
void navigateToSecondPage(BuildContext context) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => Welcome()),
);
}
@override
void initState() {
super.initState();
//postDataToApi('username_value', 'password_value');
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Hello World Page'),
),
body: Center(
child: Container(
width: MediaQuery.of(context).size.width,
height: 400,
margin: EdgeInsets.fromLTRB(16, 0, 16, 0),
padding: EdgeInsets.fromLTRB(24, 16, 24, 16),
decoration: BoxDecoration(
border: Border.all(
color: Colors.blue, // Warna border biru
width: 2, // Ketebalan border (opsional)
),
),
// Widget lain di dalam Container
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
SizedBox(height: 20),
TextField(
controller: _usernameController,
decoration: InputDecoration(
labelText: 'Username',
),
),
SizedBox(height: 20),
TextField(
controller: _passwordController,
decoration: InputDecoration(
labelText: 'Password',
),
//obscureText: true, // Agar text pada TextField tidak terlihat
),
SizedBox(height: 50),
ElevatedButton(
onPressed: () {
// Aksi saat tombol login ditekan
postDataToApi('username_value', 'password_value');
},
child: Text('Login'),
),
],
),
)),
);
}
}
void main() {
runApp(MaterialApp(
home: Login(),
));
}