Future<String> 作为 flutter 中的文本
Future<String> as text in flutter
我对 flutter 没有多少经验。
我想将 language_tool 库用于 Dart 和 Flutter (https://pub.dev/packages/language_tool)
我在 dart 中创建了这个脚本,它打印到控制台,即列表中第一项的 .message。
void tool(String text) async {
var tool = LanguageTool();
var result = tool.check(text);
List correction = await result;
print(correction[0].message);
}
void main() {
tool('Henlo i am Gabriele');
}
之后,我想:更正 [0].message,在我的 flutter 应用程序中显示为文本,但我不知道我该怎么做,因为 tool() 函数必须 return 一个未来。
我该怎么办?
class mainApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Chat(),
);
}
}
class Chat extends StatefulWidget {
const Chat({Key? key}) : super(key: key);
@override
_ChatState createState() => _ChatState();
}
class _ChatState extends State<Chat> {
String text = 'Henlo i am Gabriele';
Future<String> tool(String text) async {
var tool = LanguageTool();
var result = tool.check(text);
List correction = await result;
//print(correction[0].message);
return correction[0].message;
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Column(
children: [
Text(text),
//Text(tool(text)),
],
),
),
);
}
}
希望有人能帮助我,
谢谢。
您收到错误是因为您没有使用 FutureBuilder。尝试使用 FutureBuilder。您可以通过将小部件包装在 FutureBuilder 中来解决它。
检查这个 post Flutter Future <String > cant be assigned to parameter type string
tool()
是一种 Future
方法。尝试使用 FutureBuilder
.
FutureBuilder<String>(
future: tool(text),
builder: (context, snapshot) {
if (snapshot.hasData &&
snapshot.connectionState == ConnectionState.done) {
return Text(snapshot.data!);
}
return CircularProgressIndicator();
},
)
查看更多关于 FutureBuilder
and
您需要使用 FutureBuilder class:
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Column(
children: [
Text(text),
FutureBuilder<String>(
future: _calculation,
builder: (BuildContext context, AsyncSnapshot<String> snapshot) =>
Text(tool(snapshot.data)),
),
],
),
),
);
}
我对 flutter 没有多少经验。
我想将 language_tool 库用于 Dart 和 Flutter (https://pub.dev/packages/language_tool)
我在 dart 中创建了这个脚本,它打印到控制台,即列表中第一项的 .message。
void tool(String text) async {
var tool = LanguageTool();
var result = tool.check(text);
List correction = await result;
print(correction[0].message);
}
void main() {
tool('Henlo i am Gabriele');
}
之后,我想:更正 [0].message,在我的 flutter 应用程序中显示为文本,但我不知道我该怎么做,因为 tool() 函数必须 return 一个未来。
我该怎么办?
class mainApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Chat(),
);
}
}
class Chat extends StatefulWidget {
const Chat({Key? key}) : super(key: key);
@override
_ChatState createState() => _ChatState();
}
class _ChatState extends State<Chat> {
String text = 'Henlo i am Gabriele';
Future<String> tool(String text) async {
var tool = LanguageTool();
var result = tool.check(text);
List correction = await result;
//print(correction[0].message);
return correction[0].message;
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Column(
children: [
Text(text),
//Text(tool(text)),
],
),
),
);
}
}
希望有人能帮助我, 谢谢。
您收到错误是因为您没有使用 FutureBuilder。尝试使用 FutureBuilder。您可以通过将小部件包装在 FutureBuilder 中来解决它。
检查这个 post Flutter Future <String > cant be assigned to parameter type string
tool()
是一种 Future
方法。尝试使用 FutureBuilder
.
FutureBuilder<String>(
future: tool(text),
builder: (context, snapshot) {
if (snapshot.hasData &&
snapshot.connectionState == ConnectionState.done) {
return Text(snapshot.data!);
}
return CircularProgressIndicator();
},
)
查看更多关于 FutureBuilder
and
您需要使用 FutureBuilder class:
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Column(
children: [
Text(text),
FutureBuilder<String>(
future: _calculation,
builder: (BuildContext context, AsyncSnapshot<String> snapshot) =>
Text(tool(snapshot.data)),
),
],
),
),
);
}