【问题标题】:when I print for debug it shows type-->Instance of 'Future<dynamic>' in Flutter当我打印进行调试时,它显示类型--> Flutter 中的“Future<dynamic>”实例
【发布时间】:2021-07-17 13:36:38
【问题描述】:

只是我的任务是给变量“type”一个共享数据,请帮帮我

*此示例代码是 main.dart,我使用共享首选项进行数据传输,类型的键是“typeOfUser”,我看到了很多博客甚至 stackoverflow,但没有一个适合我的问题 *

代码如下:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:nativestore/database/datatrans.dart';
import 'package:nativestore/homepage.dart';
import 'package:nativestore/loginout/loginpage.dart';
import 'package:nativestore/shophomepage.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'loginout/auth.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: routePage(),
    );
  }
}

class routePage extends StatefulWidget {
  @override
  routePageState createState() => routePageState();
}

class routePageState extends State<routePage> {
  final AuthService _auth = AuthService();
  int type;
  bool isLoggedin = false;
  getIntValuesSF() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    int val = prefs.getInt('typeOfUser');
    return val;
  }

  @override
  void initState() {
    super.initState();
    print("type-->${getIntValuesSF()}");
    print("Init state");
    _auth.autoLogin().then((value) {
      if (value == 'null') {
        print(isLoggedin);
        setState(() {
          isLoggedin = false;
        });
      } else if (value != null) {
        setState(() {
          isLoggedin = true;
        });
      } else {
        setState(() {
          isLoggedin = false;
        });
      }
    });
  }

  // var Utype = GetUserType(type:"ko")
  @override
  Widget build(BuildContext context) {
    return isLoggedin == true
        ? (type == 2)
            ? homePage()
            : ShopHomePage()
        : loginPage();
  }
}

输出:

Performing hot restart...
Syncing files to device Redmi Note 8...
Restarted application in 2,645ms.
I/flutter (14262): type-->Instance of 'Future<dynamic>'
I/flutter (14262): Init state

所以请帮助我。 提前致谢...

【问题讨论】:

  • 您已将getIntValuesSF 标记为async,这意味着它必须返回Future
  • 是的,但是我知道如何打印getIntValuesSf,你能帮忙写代码吗?我的主要目的是将共享数据存储在int type。所以如果你的答案是存储意味着它会对我有很大帮助。

标签: flutter dart sharedpreferences dsc flutter-android


【解决方案1】:

您的代码打印Instance of 'Future&lt;dynamic&gt;' 的原因是因为正在打印getIntValuesSF() 的实例,而不是它返回的值。你可以在这里做的是运行 async 函数并使用then 在未来完成时获取它的返回值。

void initState() {
    super.initState();
    getIntValuesSF().then((value) {
        debugPrint('type-->$value');
        // do functions requiring value parameter
    });
}

【讨论】:

  • 谢谢,它有效,我完全忘记使用then谢谢
【解决方案2】:

改变它:

print("type-->${getIntValuesSF()}");

到:

var value = await getIntValuesSF();
print("type-->${value.toString()}");

【讨论】:

  • oops :( 问题还是一样。
  • 显示如下。 link
  • 兄弟添加 void initState() async {}
猜你喜欢
  • 1970-01-01
  • 2019-09-08
  • 2021-02-10
  • 1970-01-01
  • 2018-09-28
  • 2023-03-30
  • 2020-12-09
  • 2019-12-05
  • 2021-10-20
相关资源
最近更新 更多