当我打印进行调试时,它显示类型--> Flutter 中的“Future<dynamic>”实例
Posted
技术标签:
【中文标题】当我打印进行调试时,它显示类型--> Flutter 中的“Future<dynamic>”实例【英文标题】:when I print for debug it shows type-->Instance of 'Future<dynamic>' in Flutter 【发布时间】:2021-07-17 13:36:38 【问题描述】:只是我的任务是给变量“type”一个共享数据,请帮帮我
*此示例代码是 main.dart,我使用共享首选项进行数据传输,类型的键是“typeOfUser”,我看到了很多博客甚至 ***,但没有一个适合我的问题 *
代码如下:
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
。
这能回答你的问题吗? Is there a way to load async data on InitState method?
是的,但是我知道如何打印getIntValuesSf
,你能帮忙写代码吗?我的主要目的是将共享数据存储在int type
。所以如果你的答案是存储意味着它会对我有很大帮助。
【参考方案1】:
您的代码打印Instance of 'Future<dynamic>'
的原因是因为正在打印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以上是关于当我打印进行调试时,它显示类型--> Flutter 中的“Future<dynamic>”实例的主要内容,如果未能解决你的问题,请参考以下文章
在 ubuntu linux 中调试 kivy 应用程序时出现问题,当我尝试调试应用程序时,它开始导入要求,然后显示错误并退出
非调试模式时在 Visual Studio 的输出窗口中显示消息?
非调试模式时在 Visual Studio 的输出窗口中显示消息?