我需要为我的 API 发送我的令牌。我将我的令牌保存在 SharedPreferences 中,我可以恢复它。我的 API 需要一个,带有 Bearer 但怎么做?
我用授权、Http 等进行了测试。
在SP中保存的方法
Future<bool> setToken(String value) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.setString('token', value);
}
Future<String> getToken() async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString('token');
}
Future<Candidate> candidateAuth({Map map}) async {
String url = 'http://10.0.2.2:3000/v1/api/auth/candidate';
await http
.post(url,
headers: {
'Content-type': 'application/json',
'Accept': 'application/json'
},
body: jsonEncode(map))
.then((response) {
if (response.statusCode == 201) {
token = Candidate.fromJson(json.decode(response.body)).token;
Candidate().setToken(token);
return Candidate.fromJson(json.decode(response.body));
} else {
throw Exception('Failed auth'); …
Run Code Online (Sandbox Code Playgroud) 我想在我的页面中添加 SingleChildScrollView 但我有 PageView。
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new IneatAppBarPollWidget()
.getAppBar('Blackblox', 'assets/img/logo_ineat.png', cand),
body: new Center(
child: SingleChildScrollView(
child: new Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
new Expanded(
child: new Container(
child: new FutureBuilder<List<PollQuestionsDto>>(
future: _future,
// ignore: missing_return
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
return Text('Failed connection API');
case ConnectionState.waiting:
return new Text('Wait...');
case ConnectionState.done:
if (snapshot.hasData) {
if (snapshot.data != null) {
return PageView.builder(
scrollDirection: Axis.horizontal,
itemCount: snapshot.data.length,
itemBuilder: (BuildContext context, …
Run Code Online (Sandbox Code Playgroud) 我想在调用 API 时创建一个用户。\n我使用 URL 创建了一个 Future,并在屏幕页面中调用我的模型。\n我在表单中获取了所有数据,但当我调用 API 时,出现以下错误:
\n\ngetter \'length\' 被调用为 null...
\n\n用户模型:
\n\nclass Candidate {\n int id;\n String firstname;\n String lastname;\n String email;\n\n Candidate({this.id, this.firstname, this.lastname, this.email});\n\n factory Candidate.fromJson(Map<String, dynamic> json) {\n return Candidate(\n id: json[\'id\'],\n firstname: json[\'firstname\'],\n lastname: json[\'lastname\'],\n email: json[\'email\'],\n );\n }\n\n Map toMap() {\n var map = new Map<String, dynamic>();\n map["id"] = id;\n map["firstname"] = firstname;\n map["lastname"] = lastname;\n map["email"] = email;\n return map;\n }\n\n Future<Candidate> candidateAuth({Map body}) async {\n String url = …
Run Code Online (Sandbox Code Playgroud) 为什么我有这个错误,而所有变量都是初始化的。
????????? 渲染库捕获的异常????????????????????????????????? RenderBox 未布局:_RenderLayoutBuilder#657cbrelayoutBoundary=up1 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE 'package:flutter/src/rendering/box.dart':失败的断言:第 1681 行 pos 12:'hasSize' 用户创建导致错误的小部件的祖先是 Scaffold ???????? 渲染库捕获的异常????????????????????????????????? 方法 '>' 在 null 上被调用。接收者:null 尝试调用:>(1e-10) 用户创建的导致错误的小部件的祖先是 OrientationBuilder lib\no_events.dart:31 ???????????????????? ???
class _NoEvents extends State<NoEvents> {
List<Contributor> contributors = [];
List<Event> events = [];
Contributor contributor = new Contributor(1, "XXX");
@override
Widget build(BuildContext context) {
contributors.add(contributor);
Event event1 = new Event(1, contributors, DateTime(2019 - 10 - 25), "XXX", "Test1");
Event event2 = new Event(1, contributors, DateTime.now(), "XXX", "Test2");
Event event3 = new Event(1, contributors, …
Run Code Online (Sandbox Code Playgroud) 当我想获取我的令牌时,我遇到了这个错误:setState() 回调参数返回了一个 Future。
onPressed: () {
setState(() async {
if (_formKey.currentState.validate()) {
Candidate candidate = new Candidate(
lastname: lastname,
firstname: firstname,
email: email);
await candidate.candidateAuth(map: candidate.toMap());
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) =>
ThemePage(candidate: candidate)));
}
});
},
Run Code Online (Sandbox Code Playgroud)
问题是,当我继续使用我的应用程序时,我遇到了更多线程问题。