這是我的有狀態小部件,顫動不斷拋出例外,我不知道為什么。
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: FutureBuilder(
future: createUser(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return const Text('Creating Account....');
default:
if (snapshot.hasError) {
return Text('Error: ${snapshot.error}');
} else {
return Home(json: snapshot.data);
}
}
})));
}
和Home小部件:
const Home({Key? key, required this.json}) : super(key: key);
final String json;
@override
State<Home> createState() => _HomeState();
}
class _HomeState extends State<Home> {
@override
Widget build(BuildContext context) {
return Text(widget.json);
}
}
一切看起來都不錯,但是當我運行構建時,出現例外:
type 'Response<dynamic>' is not a subtype of type 'String'
The relevant error-causing widget was
FutureBuilder<dynamic>
這是創建方法:
Future createUser() async {
final prefs = await sharedPref();
final user = User((b) => b
..firstName = prefs.getString('firstName')
..lastName = prefs.getString('lastName')
..email = prefs.getString('email')
..profilePhotoUrl = prefs.getString('photo')
..isocode = prefs.getString('currency'));
final userSerlizedObject = standardSerializers.serialize(user);
final res = devHttpClient.post(
'/createaccount',
data: userSerlizedObject,
);
return res;
}
是什么導致了這個例外,我很難找到原因?
uj5u.com熱心網友回復:
我猜你的方法createUser()回傳一個Response<T>.
呼叫此方法時
return Home(json: snapshot.data);
你正在鑄造 a Response<T>(String因為你的json引數是一個字串)
您應該更新您的createUser()方法以回傳回應的主體,而不是回應本身
uj5u.com熱心網友回復:
這是有問題的代碼行: return Home(json: snapshot.data);,通過參考這樣的引數return Home(json: '${snapshot.data}');使顫振再次快樂。
uj5u.com熱心網友回復:
只需將 .toString() 添加到 snapshot.data
回傳首頁(json:snapshot.data.toString());
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/491920.html
