import 'dart:convert'; import 'package:bson/bson.dart'; import 'package:dio/dio.dart'; import 'package:fikoyt_ui/core/fiko_request.dart'; import 'package:fikoyt_ui/fikoyt_ui.dart' hide FormData, MultipartFile; import 'package:fikoyt_ui/ui/fikoyt_card.dart'; import 'package:fikoyt_ui/ui/yazi_kutulari/yazi_kutulari.dart'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; class SignUpController extends GetxController { RxMap form = {"userName": "", "mail": "", "password": "", "password_again": "", "name": "", "family_name": "", "profilResmi": null, "terms": false}.obs; XFile? image; profilResmiSec() async { final ImagePicker picker = ImagePicker(); // Pick an image. image = await picker.pickVideo(source: ImageSource.gallery); } sendForm() async { // print(toJson()); var formData = FormData(); var resimId = ObjectId().oid; form["profilResmi"] = null; if (image != null) { formData.files.add(MapEntry(resimId, MultipartFile.fromFileSync(image!.path, filename: resimId))); form["profilResmi"] = resimId; } formData.fields.add(MapEntry("req_body", jsonEncode(form).toString())); istek_yap(command: "FikoYT.sistem.Uye.Ol", parameters: formData).listen((sonuc) async { print("${sonuc.requestProgress?.percent} ${sonuc.requestProgress?.total}"); if (sonuc.type == FikoYTRequestType.REQUESTING) { // hatalar.clear(); // hatalar.add("Kayıt Başarılı".tr); // renk.value = Colors.green; // await Future.delayed(const Duration(seconds: 3)); // hataSifirla(); } }).onError((hata) async {}); } } class FikoYTSignUpScreen extends StatefulWidget { const FikoYTSignUpScreen({super.key}); @override State createState() => _FikoYTSignUpScreenState(); } class _FikoYTSignUpScreenState extends State { SignUpController logic = Get.put(SignUpController()); @override void initState() { // TODO: implement initState super.initState(); } @override void dispose() { Get.delete(); // TODO: implement dispose super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( body: SingleChildScrollView( child: Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ SizedBox( height: 100, ), FikoYTCard( theme: Theme.of(context).extension()?.copyWith( padding: EdgeInsets.all(5.0), radius: 15, mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, spacing: 10, elevation: 5, boxConstraints: BoxConstraints(maxWidth: 300), ), children: [ const Image( image: AssetImage('assets/core/icons/fikoyt-4.png'), filterQuality: FilterQuality.high, ), /** */ Center( child: Stack( alignment: Alignment.center, children: [ CircleAvatar( backgroundColor: Colors.blue.shade700, radius: (54) + 10.0, //CircleAvatar ), CircleAvatar( backgroundColor: Theme.of(context).extension()?.backgroundColor, radius: 54, child: ClipOval( child: Stack( alignment: Alignment.center, children: [ Positioned( top: -3, left: -3, right: -3, bottom: -3, child: Center( child: Text( "👨🏻‍💼", style: TextStyle(fontSize: 56), ), ), ), ], ), ), ), ], ), //CircleAvatar ), Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ FikoYTButton( text: "📸 Resim Seç", tema: FikoYTButtonTheme( fontSize: 12, edgePadding: EdgeInsets.symmetric( horizontal: 5, vertical: 3, ), fontWeight: FontWeight.bold, textColor: Colors.white, borderColor: Colors.blue.shade200, backgroundColor: Colors.blue.shade500, ), onPressed: () { logic.profilResmiSec(); }, ), ], ), // Image( // image: AssetImage('assets/core/icons/logo.png'), // width: 256, // height: 256, // filterQuality: FilterQuality.high, // ), FikoYTAlert( description: "Üye Olmak İçin Bilgilerinizi Giriniz".tr(), emoji: "👫", ), FikoYaziKutusu( baslik: "İsmi".tr(), simgeSol: const Text( "✏️", style: TextStyle( fontSize: 16, ), textAlign: TextAlign.center, ), maksGenislik: 280.0, radius: 5.0, degeri: logic.form["name"], degisti: (value) { logic.form["name"] = value; }, ), FikoYaziKutusu( baslik: "Soy İsmi".tr(), simgeSol: const Text( "👨‍👩‍👧‍👦", style: TextStyle( fontSize: 16, ), textAlign: TextAlign.center, ), maksGenislik: 280.0, radius: 5.0, degeri: logic.form["family_name"], degisti: (value) { logic.form["family_name"] = value; }, ), FikoYaziKutusu( baslik: "Kullanıcı Adı".tr(), simgeSol: const Text( "👩🏻‍🤝‍👨🏽", style: TextStyle( fontSize: 16, ), textAlign: TextAlign.center, ), maksGenislik: 280.0, radius: 5.0, degeri: logic.form["userName"], degisti: (value) { logic.form["userName"] = value; }, ), FikoYaziKutusu( baslik: "E-Posta".tr(), simgeSol: const Text( "📧", style: TextStyle( fontSize: 16, ), textAlign: TextAlign.center, ), maksGenislik: 280.0, radius: 5.0, degeri: logic.form["mail"], degisti: (value) { logic.form["mail"] = value; }, ), FikoYaziKutusu( baslik: "Parola".tr(), gizli: true, simgeSol: const Text( "🔑", style: TextStyle( fontSize: 16, ), textAlign: TextAlign.center, ), maksGenislik: 280.0, radius: 5.0, degeri: logic.form["password"], degisti: (value) { logic.form["password"] = value; }, ), FikoYaziKutusu( baslik: "Parola Tekrar".tr(), gizli: true, simgeSol: const Text( "🔑", style: TextStyle( fontSize: 16, ), textAlign: TextAlign.center, ), maksGenislik: 280.0, radius: 5.0, degeri: logic.form["password_again"], degisti: (value) { logic.form["password_again"] = value; }, ), Row( children: [ Spacer(), Text("Lütfen Anlaşmayı Onaylayın"), Obx( () => Checkbox( value: logic.form["terms"], onChanged: (value) { logic.form["terms"] = value; }, ), ), ], ), Row( children: [ Spacer(), FikoYTButton( text: "📨 Gönder", tema: FikoYTButtonTheme( fontSize: 14, edgePadding: EdgeInsets.symmetric( horizontal: 5, vertical: 2, ), fontWeight: FontWeight.bold, textColor: Colors.blueAccent, borderColor: Colors.lightBlue, ), onPressed: () async { logic.sendForm(); }, ), ], ), Row( children: [ FikoYTButton( text: "👈 Giriş Yap", tema: FikoYTButtonTheme( fontSize: 12, edgePadding: EdgeInsets.symmetric( horizontal: 0, vertical: 0, ), fontWeight: FontWeight.bold, textColor: Colors.blueAccent, borderColor: Colors.transparent, ), onPressed: () { context.vRouter.to("/fikoyt-login"); }, ), Spacer(), ], ), ], ), ], ) ], ), ), ); } }