颤振错误符文不是函数或方法,无法调用

Posted

技术标签:

【中文标题】颤振错误符文不是函数或方法,无法调用【英文标题】:flutter error runes isnt a fuction or method and cant be invoked 【发布时间】:2022-01-16 13:31:20 【问题描述】:

List posts=[];

Future getPost()async
    
    var url="https://jsonplaceholder.typicode.com/posts" ; 
    var http;
    var response = await http.get(url);             
    var responsebody = jsonDecode(response.body) ;       
    return responsebody ; 
    // ignore: dead_code
    setState(() 
      posts.addAll(responsebody);
    );
    
    @override
    void initState() 
      getPost();
      super.initState();
      
    



// ignore: dead_code
  @override
  Widget build(BuildContext context) 
    return Scaffold(
        appBar: AppBar(title:Text('Alex',style: TextStyle(color: Colors.cyanAccent),),
backgroundColor: Colors.black87,centerTitle: true,),
        drawer: Drawer(),
        body: posts == null || posts.isEmpty ? Center(child: CircularProgressIndicator(),) :
                Center( child: ListView.builder(
                   itemCount : posts.length,
                   itemBuilder :(context,i)
                         return Text("$posts[i]['title']");

                   
                 
                 ,)
            ));

          

【问题讨论】:

请用三个反引号包围你的所有代码,像这样``` <empty line>```</empty> 【参考方案1】:

添加这个类

class MyClass 
  final int userId;
  final int id;
  final String title;
  final String body;

  MyClass(
    this.userId,
    this.id,
    this.title,
    this.body);
  factory MyClass.fromMap(Map<String, dynamic> json) 
    return MyClass(
      json['userId'],
      json['id'],
      json['title'],
      json['body']);
  

然后将 getPost() 方法更改为:

import 'package:http/http.dart' as http;
Future getPost()async
    
    var url="https://jsonplaceholder.typicode.com/posts" ; 
    var response = await http.get(url);
    
    final parsed = json.decode(response.body).cast<Map<String, dynamic>>();
   
   
   
    setState(() 
       posts = parsed
        .map<MyClass>((json) => MyClass.fromMap(json))
        .toList();
    );

【讨论】:

很遗憾没用,我遇到了同样的错误,我被这样困了一个星期 将此行添加到小部件代码“import 'package:http/http.dart' as http;”我编辑了答案 我复制了你发给我的代码,但它没有用,我用其他包也有同样的错误 调试步骤,看看是否收到来自服务器的数据 不,我没有收到数据(感谢您与我站在一起,我正在努力寻找解决方案)【参考方案2】:

问题出在 SDK 工具上。打开命令提示符并运行:

git clean -xfd

重启你的电脑然后运行:

flutter upgrade

【讨论】:

以上是关于颤振错误符文不是函数或方法,无法调用的主要内容,如果未能解决你的问题,请参考以下文章

颤振错误“方法'toLowerCase()'在null上被调用”

颤振打开 Hive 框会给出错误 - 说找不到框,您是不是忘记调用 Hive openbox()

颤振应用程序中的“setState() 或 MarkNeedsBuild() 期间调用”错误

颤振医生 --android-licenses 错误:无法找到或加载主类 Studio

错误:将 android studio 更新到 4.1 后无法在颤振中找到或加载主类

在颤振中的构造函数列表上使用 .map 方法