TKK_E32210055/lib/login.dart

86 lines
2.5 KiB
Dart

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'home/home_view.dart'; // Import halaman baru
import 'package:shared_preferences/shared_preferences.dart';
class LoginView extends StatefulWidget {
const LoginView({super.key});
@override
State<LoginView> createState() => _LoginViewState();
}
class _LoginViewState extends State<LoginView> {
final TextEditingController _controller = TextEditingController();
String _response = '';
Future<void> _connectToESP() async {
final String ipAddress = _controller.text;
final url =
'http://$ipAddress/'; // Sesuaikan dengan endpoint yang sesuai di ESP8266 Anda
try {
final response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString('espIpAddress', ipAddress);
setState(() {
_response = response.body;
});
// Navigasi ke halaman baru setelah berhasil terhubung
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => HomeView(espIpAddress: ipAddress),
),
);
} else {
setState(() {
_response = 'Failed to connect: ${response.statusCode}';
});
}
} catch (e) {
setState(() {
_response = 'Error: $e';
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('ESP8266 Connector'),
backgroundColor: Colors.black,
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: [
TextField(
controller: _controller,
decoration: InputDecoration(
labelText: 'Enter ESP8266 IP Address',
counterStyle: TextStyle(color: Colors.black),
border:
OutlineInputBorder(borderRadius: BorderRadius.circular(10)),
),
keyboardType: TextInputType.number,
cursorColor: Colors.black,
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _connectToESP,
child: Text('Connect'),
style: ElevatedButton.styleFrom(backgroundColor: Colors.black),
),
SizedBox(height: 20),
Text(_response),
],
),
),
);
}
}