gpt4 book ai didi

flutter - 我的 Flutter FutureBuilder 如何更改布局中多个位置的文本?

转载 作者:IT王子 更新时间:2023-10-29 06:45:55 26 4
gpt4 key购买 nike

我仔细阅读了Flutter教程;从互联网上获取数据:https://flutter.io/cookbook/networking/fetch-data/

我担心的是我想更新布局中的多个文本。

该实现仅展示了一种更新方式:

FutureBuilder<Post>(
future: fetchPost(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data.title);
} else if (snapshot.hasError) {
return Text("${snapshot.error}");
}
// By default, show a loading spinner
return CircularProgressIndicator();
},
);

这工作正常并且一次显示一个 View 。

在 Android Studio/Java 中,我会做类似的事情:

myTextView1.setText(snapshot.data.data1)
myTextView2.setText(snapshot.data.data2)
myTextView3.setText(snapshot.data.data3)
.....
myTextView10.setText(snapshot.data.data3)

但在 Flutter 中,我目前一次只能使用一个“Widget”。

当然,我可以在返回参数中提供我的整个布局,但那太疯狂了!

有什么想法/建议吗?

最佳答案

另一种策略是在状态类中有一个局部变量,并在未来到来时更新它。因此,您可以在任何需要的地方引用该变量。

这是一个例子:

import 'dart:async';

import 'package:flutter/material.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
home: new MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}

class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);

final String title;

@override
_MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
Post _post = Post("Title 0", "Subtitle0 ", "description 0");

@override
void initState() {
super.initState();
_getPost();
}

void _getPost() async {
_post = await fetchPost();
setState(() {});
}

Future<Post> fetchPost() {
return Future.delayed(Duration(seconds: 4), () {
return Post("Title new", "Subtitle new", "description new");
});
}

@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: Center(
child: Column(
children: <Widget>[
new Text(_post.title),
new Text(_post.subtitle),
new Text(_post.description),
],
),
),
);
}
}

class Post {
final String title;
final String subtitle;
final String description;

Post(this.title, this.subtitle, this.description);
}

关于flutter - 我的 Flutter FutureBuilder 如何更改布局中多个位置的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52775133/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com