首页 > 解决方案 > 如何解决本地存储中的 join() 问题?

问题描述

你好,我是 Flutter 的新手,我已经启动了一个应用程序来进行登录,然后她将数据发送到数据库,同时她在 Flutter 中使用 sqifile 工具创建了一个内部数据库,但是当我输入附加的方法时join(),错误结果和消除时

Navigator.push (
         context,
         MaterialPageRoute (
           builder: (context) => verifUser (),
         ),
       );

一切都很好。

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:footyappp/Key/Key.dart';
import 'package:footyappp/Profile/storage.dart';
import 'package:footyappp/Screens/Login/login_screen.dart';
import 'package:footyappp/Screens/Signup/components/background.dart';
import 'package:footyappp/Screens/Signup/components/or_divider.dart';
import 'package:footyappp/Screens/Signup/components/social_icon.dart';
import 'package:footyappp/components/already_have_an_account_acheck.dart';
import 'package:footyappp/components/rounded_button.dart';
import 'package:footyappp/components/rounded_input_field.dart';
import 'package:footyappp/components/rounded_password_field.dart';
import 'package:footyappp/models/ListTeams.dart';
import 'package:footyappp/verifUser.dart';
import 'package:flutter_svg/svg.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:footyappp/verifUser.dart';
import 'package:http/http.dart' as http;
import 'package:http/http.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:sqflite/sqflite.dart';


class Body extends StatefulWidget {
  @override
  _BodyState createState() => _BodyState();
}

class _BodyState extends State<Body> {

   

  String _name;
  String _email;
  String _equipe;
  String _password;

  String selected ;
  TextEditingController name = TextEditingController();

  TextEditingController email = TextEditingController();

  TextEditingController equipe = TextEditingController();
  TextEditingController password = TextEditingController();

  registerUser( String name, String email, String equipe, String password) async {
    String url = 'http://192.168.43.203:3000/api/users/adduser';
    Map<String, String> headers = {"Content-type": "application/json"};
    String json = '{"name": "' +
        name +
        '","email": "' +
        email +
        '","equipe": "' +
        selected +
        '", "password": "' +
        password +
        '"}';
    Response response = await post(url, headers: headers, body: json);
    var res = jsonDecode(response.body);
    if (res == "Error") {
    } else {
      print(jsonDecode(response.body));
      Fluttertoast.showToast(
          msg: "Verify your acount",
          toastLength: Toast.LENGTH_SHORT,
          gravity: ToastGravity.CENTER,
          timeInSecForIosWeb: 1,
          backgroundColor: Colors.green,
          textColor: Colors.white,
          fontSize: 16.0);
 Navigator.push(
        context,
        MaterialPageRoute(
          builder: (context) => verifUser(),
        ),
      );
        
     
    }
    return response;
  }
     List   results ;

   Future<void>  getclubs() async {

    http.Response response = await http.get(
        'https://v3.football.api-sports.io/teams?season=2020&league=39',
        headers: {'x-rapidapi-key': ApiKey.key,
          'x-rapidapi-host':'v3.football.api-sports.io'});
    String body = response.body;
    var data = jsonDecode(body);

    setState(() {
      results = data['response'];
    });

  }

  Map<String, dynamic> toMap(){

  return {
    "id": _id,
    "model": _name,
    "make":_email,
    "image":_equipe,
    "description":_password,

  };

}
  @override
  void initState() {
    super.initState();
    getclubs();
  }

  @override
  Widget build(BuildContext context) {

    //final SecureStorage secureStorage = SecureStorage();

    //.writeSecureData("name", name.text);
    //secureStorage.writeSecureData("email", email.text);
    //secureStorage.writeSecureData("equipe", equipe.text);
    //secureStorage.writeSecureData("password", password.text);

    Size size = MediaQuery.of(context).size;
    return Background(
      child: SingleChildScrollView(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              "SIGNUP",
              style: TextStyle(fontWeight: FontWeight.bold),
            ),
            SizedBox(height: size.height * 0.03),
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: TextField(
                controller: name,
                decoration: InputDecoration(hintText: 'Name'),
              ),
            ),
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: TextField(
                controller: email,
                decoration: InputDecoration(hintText: 'email'),
              ),
            ),
            Padding(
                padding: const EdgeInsets.all(8.0),
                child: DropdownButton<String>(
                  value: selected,
                  hint: Text("Select your Team"),
                  onChanged: (String value) {
                             selected = value;
                        getclubs();
                        print(selected);
                 
                  },
                  items: results?.map((item){
                    return DropdownMenuItem(
                      child: 
                        Text(item['team']['name']),
                        value: item['team']['id'].toString(),
                       
                      );
                  })?.toList()??
                  []
                )),
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: TextField(
                controller: password,
                decoration: InputDecoration(hintText: 'Password'),
                  obscureText: true,

              ),
            ),
            RoundedButton(
              text: "SIGNUP",
              press: () async {
                //1 open or creare
              Database db = await openDatabase(
              join(await getDatabasesPath(), "users-database.db"),
              //2 create Table
              onCreate: (Database db, int version) {
                db.execute("CREATE TABLE user (id TEXT PRIMARY KEY, name TEXT, email TEXT, equipe TEXT, password TEXT);");
              },

              version: 1
            );

              //3 Insert action
              await db.insert("user", toMap(), conflictAlgorithm: ConflictAlgorithm.ignore);

              //4 SELECT ALL
              List<Map<String, dynamic>> maps = await db.query("user");
              print(maps);

              SharedPreferences prefs = await SharedPreferences.getInstance();
          prefs.setString("clubID",selected);
          
                registerUser(name.text, email.text, selected, password.text);
              },
            ),
            SizedBox(height: size.height * 0.03),
            AlreadyHaveAnAccountCheck(
              login: false,
              press: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(
                    builder: (context) {
                      return LoginScreen();
                    },
                  ),
                );
              },
            ),
            OrDivider(),
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                SocalIcon(
                  iconSrc: "assets/icons/facebook.svg",
                  press: () {},
                ),
                SocalIcon(
                  iconSrc: "assets/icons/twitter.svg",
                  press: () {},
                ),
                SocalIcon(
                  iconSrc: "assets/icons/google-plus.svg",
                  press: () {},
                ),
              ],
            )
          ],
        ),
      ),
    );
  }
}

标签: flutter

解决方案


推荐阅读