morarf
Tue Jul 16 2024 05:20:18 GMT+0000 (Coordinated Universal Time)
Saved by @mehran
import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:ghalam_jadoee/component/api_service.dart'; import 'package:ghalam_jadoee/component/body3.dart'; import 'package:ghalam_jadoee/component/user_textfield.dart'; import 'package:ghalam_jadoee/pages/bottomnav.dart'; import 'package:ghalam_jadoee/pages/sign.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() { runApp(Moarf()); } String PUser = ""; class Moarf extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Referral Code Page', theme: ThemeData( primarySwatch: Colors.blue, visualDensity: VisualDensity.adaptivePlatformDensity, ), home: ReferralCodePage(), ); } } final TextEditingController _nameController = TextEditingController(); class ReferralCodePage extends StatefulWidget { @override _ReferralCodePageState createState() => _ReferralCodePageState(); } class _ReferralCodePageState extends State<ReferralCodePage> { final _formKey = GlobalKey<FormState>(); final TextEditingController _referralCodeController = TextEditingController(); String _message = ''; bool _isButtonActive = false; @override void initState() { super.initState(); _referralCodeController.addListener(_validateCode); _nameController.addListener(_validateCode); } void _validateCode() { setState(() { final code = _referralCodeController.text; final name = _nameController.text; _isButtonActive = name.isNotEmpty && (code.isEmpty || (code.length == 6 && RegExp(r'^[a-zA-Z0-9]+$').hasMatch(code))); }); } Future<void> saveLogin(String PUser) async { final prefs = await SharedPreferences.getInstance(); await prefs.setString("userkey", PUser); await prefs.setBool("loggedIn", true); } void _submitCode() async { if (_formKey.currentState?.validate() ?? false) { var name = _nameController.text; var referral = _referralCodeController.text; print("name"); print(name); print("ph"); print(SendPhone); print("rf"); print(referral); PUser = SendPhone; String state = 's3'; try { var jsonResponse = await ApiService.confirm(SendPhone, name, referral, state); setState(() { print(jsonResponse); _message = 'کد معرف وارد شده: $referral'; }); await saveLogin(PUser); Navigator.pushReplacement( context, MaterialPageRoute(builder: (context) => Bottomnav()), ); } catch (e) { setState(() { _message = 'خطا در ارسال کد معرف: ${e.toString()}'; }); } } } void _clearCode() async { _referralCodeController.clear(); if (_formKey.currentState?.validate() ?? false) { var name = _nameController.text; var referral = "0"; print("name"); print(name); print("ph"); print(SendPhone); print("rf"); print(referral); PUser = SendPhone; String state = 's3'; try { var jsonResponse = await ApiService.confirm(SendPhone, name, referral, state); setState(() { print('jsonResponse'); print(jsonResponse); _message = 'معرفی ندارم'; }); await saveLogin(PUser); Navigator.pushReplacement( context, MaterialPageRoute(builder: (context) => Bottomnav()), ); } catch (e) { setState(() { _message = 'خطا در ارسال کد معرف: ${e.toString()}'; }); } } } @override void dispose() { _referralCodeController.removeListener(_validateCode); _nameController.removeListener(_validateCode); _referralCodeController.dispose(); _nameController.dispose(); super.dispose(); } @override @override Widget build(BuildContext context) { return WillPopScope( onWillPop: () async { return false; }, child: Scaffold( body: SingleChildScrollView( child: Container( height: MediaQuery.of(context).size.height, child: Stack( alignment: Alignment.center, children: [ Body3(), Align( alignment: Alignment.topCenter, child: SingleChildScrollView( child: Padding( padding: EdgeInsets.only( top: MediaQuery.of(context).size.height * 0.48), child: Padding( padding: const EdgeInsets.all(24.0), child: Form( key: _formKey, child: Column( mainAxisSize: MainAxisSize.min, children: <Widget>[ UserNameTextField(controller: _nameController), SizedBox(height: 30), Align( alignment: Alignment.centerRight, child: const Text( ': کد معرف ', textAlign: TextAlign.end, style: TextStyle( fontSize: 20, fontWeight: FontWeight.w300, ), ), ), SizedBox(height: 10), Container( alignment: Alignment.centerRight, child: TextFormField( controller: _referralCodeController, decoration: InputDecoration( border: OutlineInputBorder( borderRadius: BorderRadius.circular(12), ), contentPadding: const EdgeInsets.symmetric( vertical: 16.0, horizontal: 12.0, ), ), maxLength: 6, validator: (value) { if (value != null && value.isNotEmpty) { if (value.length != 6) { return 'کد معرف باید ۶ کاراکتر باشد'; } else if (!RegExp(r'^[a-zA-Z]+$') .hasMatch(value)) { return 'کد معرف باید فقط حاوی حروف انگلیسی باشد'; } } return null; }, ), ), SizedBox(height: 20), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ TextButton( onPressed: _isButtonActive ? _submitCode : null, style: TextButton.styleFrom( foregroundColor: _isButtonActive ? Colors.blue : Colors.grey, padding: const EdgeInsets.symmetric( horizontal: 32, vertical: 12, ), textStyle: const TextStyle( fontSize: 16, fontWeight: FontWeight.bold, ), ), child: const Text('ارسال'), ), TextButton( onPressed: _clearCode, style: TextButton.styleFrom( foregroundColor: Colors.red, padding: const EdgeInsets.symmetric( horizontal: 32, vertical: 12, ), textStyle: const TextStyle( fontSize: 16, fontWeight: FontWeight.bold, ), ), child: const Text('معرفی ندارم'), ), ], ), SizedBox(height: 20), Text( _message, style: TextStyle( fontSize: 16, color: _message.contains('کد معرف وارد شده') ? Colors.green : Colors.red, ), textDirection: TextDirection.rtl, ), ], ), ), ), ), ), ), ], ), )), )); } }
Comments