import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'profile_setup_screen.dart'; import 'activity_list_screen.dart'; class LoginScreen extends StatefulWidget { const LoginScreen({super.key}); @override State createState() => _LoginScreenState(); } class _LoginScreenState extends State { final _phoneController = TextEditingController(); final _codeController = TextEditingController(); bool _codeSent = false; void _sendCode() { if (_phoneController.text.length == 11) { setState(() => _codeSent = true); ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text('验证码已发送(测试码:123456)')), ); } } void _login() async { if (_codeController.text == '123456') { final prefs = await SharedPreferences.getInstance(); await prefs.setString('auth_token', 'mock_token_${DateTime.now().millisecondsSinceEpoch}'); await prefs.setString('phone', _phoneController.text); final isNewUser = prefs.getString('user_nickname') == null; if (mounted) { Navigator.pushReplacement( context, MaterialPageRoute(builder: (_) => isNewUser ? ProfileSetupScreen() : ActivityListScreen()), ); } } else { ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text('验证码错误')), ); } } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: const Color(0xFFFFF8F0), appBar: AppBar(title: Text('登录 / 注册')), body: Padding( padding: EdgeInsets.all(24), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text('欢迎使用伴享', style: TextStyle(fontSize: 28, fontWeight: FontWeight.w300)), SizedBox(height: 60), TextField( controller: _phoneController, keyboardType: TextInputType.phone, maxLength: 11, decoration: InputDecoration( labelText: '手机号', border: OutlineInputBorder(), ), ), SizedBox(height: 20), if (_codeSent) ...[ TextField( controller: _codeController, keyboardType: TextInputType.number, maxLength: 6, decoration: InputDecoration( labelText: '验证码', border: OutlineInputBorder(), ), ), SizedBox(height: 20), ], SizedBox( width: double.infinity, height: 50, child: ElevatedButton( onPressed: _codeSent ? _login : _sendCode, style: ElevatedButton.styleFrom( backgroundColor: Color(0xFF333333), foregroundColor: Colors.white, ), child: Text(_codeSent ? '登录' : '获取验证码', style: TextStyle(fontSize: 16)), ), ), ], ), ), ); } }