flutter - 如何解决本地存储中的 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: () {},
),
],
)
],
),
),
);
}
}
解决方案
推荐阅读
- cypress - 将 Cypress 的自定义 TypeScript 命令存储在单独的 npm 依赖项中
- module - 如何在 Drupal 中单击一下就克隆一个节点及其所有子节点?
- html - 从文件中检查多个 url
- javascript - 谷歌云端硬盘文件选择器被谷歌阻止
- javascript - Javascript SetMonth 问题
- next.js - 滚动到 nextjs 中的部分
- azure - 如何在不创建应用程序的情况下使用图形 API 上传到 onedrive
- php - 用 php 下载 svg
- tensorflow - 为什么在 TensorFlow 模型训练中 keras 比 estimator 慢?
- python - 是否可以使用我的帐户而不是机器人 DM 用户?不和谐