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

السؤال

نشر

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

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

كنت قد حددت دالة للتحقق 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...