اذهب إلى المحتوى
  • 0

تفعيل زر التحقق من مدخلات المستخدم قبل عمل تسجيل الدخول Flutter

وليد الجمل

السؤال

لدي صف حالة لعمل تسجيل دخول للمستخدم يتصل بالسيرفر 

لكن لدي مشكلة أن الزر غير مفعل و غير قابل للنقر

كنت قد حددت دالة للتحقق checkInput وأسندتها للخاصية onPress

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:http/http.dart' as http;
import 'main.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:sy_traffic_mangement/homepage.dart';

class LoginPage extends StatefulWidget {
  @override
  _LoginPageState createState() => _LoginPageState();
}

class _LoginPageState extends State<LoginPage> {

  final TextEditingController emailController = new TextEditingController();
  final TextEditingController passwordController = new TextEditingController();

  bool _isLoading = false;

  @override
  Widget build(BuildContext context) {
    SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light
        .copyWith(statusBarColor: Colors.transparent));
    return Scaffold(
      body: Container(
        decoration: BoxDecoration(
          gradient: LinearGradient(
              colors: [Colors.blue, Colors.teal],
              begin: Alignment.topCenter,
              end: Alignment.bottomCenter),
        ),
        child: _isLoading
            ? Center(child: CircularProgressIndicator())
            : ListView(
          children: <Widget>[
            headerSection(),
            textSection(),
            buttonSection(),
          ],
        ),
      ),
    );
  }

  signIn(String email, String pass) async {
    SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
    Map data = {'email': email, 'password': pass};
    var jsonResponse = null;
    var response = await http.post(Uri.parse('http://syy.pythonanywhere.com/login/'), body: data);
    if (response.statusCode == 200) {
      jsonResponse = json.decode(response.body);
      if (jsonResponse != null) {
        setState(() {
          _isLoading = false;
        });
        sharedPreferences.setString("token", jsonResponse['token']);
        Navigator.of(context).push(
            MaterialPageRoute(builder: (BuildContext context) => Home() ),);
      }
    } else {
      setState(() {
        _isLoading = false;
      });
      print('request error');
      print(response.body);
    }
  }

  Container buttonSection() {
    return Container(
      width: MediaQuery.of(context).size.width,
      height: 40.0,
      padding: EdgeInsets.symmetric(horizontal: 15.0),
      margin: EdgeInsets.only(top: 15.0),
      child: RaisedButton(
        onPressed: checkInput(),
        elevation: 0.0,
        color: Colors.purple,
        child: Text("Sign In", style: TextStyle(color: Colors.white70)),
        shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(5.0)),
      ),
    );
  }
  checkInput() {
    print(emailController.text + ' ' + passwordController.text );
    if (emailController.text == "" || passwordController.text == "")
      return null;

      setState(() {
        _isLoading = true;
      });
      signIn(emailController.text, passwordController.text);
  }

 

0.png

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

عند تحميل التطبيق سيتم تنفيذ دالة checkInput لأول مرة و إسناد قيمتها للدالة onpress كتابع.

وأنت تريد تطبيق دالة التحقق بعد النقر، لذلك نجعل الزر يستدعي دالة وهي بدورها تستدعي دالة التحقق ليصبح:

onPressed: () {
  checkInput();
},

حاول مجدداً يتوجب أن يعمل الزر

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...