我试图通过按下flutter应用程序上的按钮从我的机器中托管的闪存服务器获取一个字符串,因此每次按下按钮时文本都会更改为烧瓶字符串。烧瓶服务器:

颤动应用程序:

当我按下按钮时,我希望得到新的字符串,但得到问题标题的错误,我知道这是一个“类型”错误,但不确定我在哪里给出“字符串”值,那么如何修复我的代码呢?任何帮助表示赞赏!
完整错误(如果有帮助):https ://textuploader.com/tdhk0
这是我的颤振代码(request.dart 和 main.dar):
//request dart-------------------------
import 'package:http/http.dart';
Future getData(url) async {
Response response = await get(url);
return response.body;
}
//main.dart-------------------------------
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:passg/request.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Change Text Dynamically on Button Click')
),
body: Center(
child: UpdateText()
)
)
);
}
}
class UpdateText extends StatefulWidget {
UpdateTextState createState() => UpdateTextState();
}
class UpdateTextState extends State {
String textHolder = 'Old Sample Text...!!!';
changeText() async {
var data = await getData('http://10.0.2.2:5000/passg');
var decodedData = jsonDecode(data);
setState(() {
textHolder = decodedData;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(child: Column(
children: <Widget>[
Container(
padding: EdgeInsets.fromLTRB(20, 20, 20, 20),
child: Text('$textHolder',
style: TextStyle(fontSize: 21))),
ElevatedButton(
onPressed: () => changeText(),
child: Text('Click Here To Change Text Widget Text Dynamically'),
),
]))
);
}
}```
Run Code Online (Sandbox Code Playgroud)
问题的根源在于参数类型缺失。通过这样做,参数将dynamic使得 Dart 分析器无法在运行应用程序之前识别潜在的类型问题。因此,当涉及到方法和类字段的签名时,您应该始终明确指定类型。
问题是这个方法:
Future getData(url) async {
Response response = await get(url);
return response.body;
}
Run Code Online (Sandbox Code Playgroud)
如果你想这样做,参数url应该是类型。Uri或者,您可以制作它String,但您需要将其解析String为Uri如下所示:
Future getData(String url) async {
Response response = await get(Uri.parse(url));
return response.body;
}
Run Code Online (Sandbox Code Playgroud)
get()您可以从包中阅读该方法的文档http,以查看它是否需要Uri: https: //pub.dev/documentation/http/latest/http/Client/get.html
尝试以这种方式创建您的网址:
var data = await getData(Uri.parse('http://10.0.2.2:5000/passg'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2721 次 |
| 最近记录: |