Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter HTTP调用永远不会发出颤振 编辑_Flutter_Dart - Fatal编程技术网

Flutter HTTP调用永远不会发出颤振 编辑

Flutter HTTP调用永远不会发出颤振 编辑,flutter,dart,Flutter,Dart,移动代码修复了这个问题,但我现在收到了这个错误。 我试图调试一个问题,但我的http调用从未被命中。我不得不重新设计wiget,使它有状态,所以我想我错过了一些东西。我从来没有对屏幕加载进行过http调用,我们通常是通过点击按钮来实现的 代码如下: class FlutterReduxApp extends StatefulWidget { final User user; const FlutterReduxApp({Key key, @required this.user}) :

移动代码修复了这个问题,但我现在收到了这个错误。

我试图调试一个问题,但我的http调用从未被命中。我不得不重新设计wiget,使它有状态,所以我想我错过了一些东西。我从来没有对屏幕加载进行过http调用,我们通常是通过点击按钮来实现的

代码如下:

class FlutterReduxApp extends StatefulWidget {
  final User user;

 const FlutterReduxApp({Key key, @required this.user}) : super(key: key);

   @override
   State<StatefulWidget> createState() => _FlutterReduxAppState(user);
}


class _FlutterReduxAppState extends State<FlutterReduxApp> {
final User user;

 final store = Store<CategoryState>(stateReducer,
     initialState: CategoryState([

    if(features.isCheckInOn) HomeCategory(0, Icons.check, Colors.blue[800], "Check In", [Task(0, "Check In", true),]),
    HomeCategory(1, Icons.chat_bubble, Colors.red, "Forums", [ Task(1, "Questions", true),]),
    HomeCategory(2, Icons.star, Colors.blue[200], "Goals", [ Task(2, "Goals", true),]),
    HomeCategory(3, Icons.monetization_on, Colors.orange[700], "Budget", [ Task(3, "Budget", true),]),
    HomeCategory(4, Icons.shopping_basket, Colors.brown[300], "Shopping", [ Task(4, "Items", true),]),
    HomeCategory(5, Icons.calendar_today, Colors.purple[900], "My Day & Calendar", [ Task(4, "Events", false),]),
    HomeCategory(6, Icons.check_circle_outline, Colors.teal[700], "Check Out", [ Task(4, "Tasks", false),]),
    HomeCategory(7, Icons.dock, Colors.grey[700], "Connect", [ Task(4, "Tasks", false),]),
    HomeCategory(8, Icons.local_pharmacy, Colors.green, "My Medication", [ Task(4, "Tasks", false),]),
    HomeCategory(9, Icons.settings, Colors.yellow[800], "Settings", [ Task(4, "Tasks", false),]),
  ]),

  );

   _FlutterReduxAppState(this.user);


 static Features features;
  @override
  void initState () {
   super.initState();
   features = getFeatureStatus(user.userId) as Features;


}
类flatterReduxapp扩展StatefulWidget{
最终用户;
constflutreduxapp({Key-Key,@required this.user}):super(Key:Key);
@凌驾
State createState()=>\u flatterReduxappState(用户);
}
类ReduxappState扩展状态{
最终用户;
最终存储=存储(stateReducer,
初始状态:CategoryState([
如果(features.isCheckInOn)HomeCategory(0,Icons.check,Colors.blue[800],“签入”,[Task(0,“签入”,true),]),
HomeCategory(1,Icons.chat_bubble,Colors.red,“论坛”,[任务(1,“问题”,true),]),
HomeCategory(2,Icons.star,Colors.blue[200],“Goals”,[Task(2,“Goals”,true),]),
HomeCategory(3,Icons.monetization\u on,Colors.orange[700],“Budget”,[Task(3,“Budget”,true),]),等等,
HomeCategory(4,Icons.shopping_basket,Colors.brown[300],“shopping”,[Task(4,“Items”,true),]),
HomeCategory(5,Icons.calendar_today,Colors.purple[900],“我的日子和日历”,[Task(4,“Events”,false),],
HomeCategory(6个,图标。检查圆\轮廓,颜色。teal[700],“签出”,“任务(4,“任务”,错误),]),
HomeCategory(7,Icons.dock,Colors.grey[700],“Connect”,[Task(4,“Tasks”,false),]),
HomeCategory(8,Icons.local_pharmacy,Colors.green,“我的药物”,“任务(4,“任务”,false)”),
HomeCategory(9,Icons.settings,Colors.yellow[800],“settings”,任务(4,“Tasks”,false),),
]),
);
_flatterReduxappState(this.user);
静态特征;
@凌驾
void initState(){
super.initState();
features=getFeatureStatus(user.userId)作为功能;
}
HTTP呼叫
Future getFeatureStatus(字符串用户ID)异步{
特征(u特征),;
最后答复=
等待http.post('http://url/api/FeaturesGet',
标题:{“内容类型”:“应用程序/json”,
'Accept':'application/json',},
body:json.encode({'userID':userID}));
//如果对服务器的调用成功,则解析JSON
_features=features.fromJson(json.decode(response.body));
返回功能;
} 

根本没有断点被命中

getFeatureStatus
返回一个
未来
而不是
功能
,因此您的分配(
features=getFeatureStatus(user.userId)作为功能
)类型错误。您需要等待
getFeatureStatus
返回的
Future
或使用
Future。然后
注册一个回调,在Future完成时设置
功能


另外,您正在
存储
的初始值设定项中引用
功能
,这可能会导致问题,因为当您创建
\u flatterReduxappState
的实例时,它很可能是
空的
。这将导致您在
if(features.isCheckInOn)处获得
空点异常
在代码中。

在代码中没有HTTP调用。它的features=getFeatureStatus(user.userId)作为功能;我将编辑并添加它。我甚至无法在任何地方找到断点来命中你的post调用似乎没有任何问题。你已经仔细检查了你的API是否按预期工作?因为它是你自己的API,只有你可以测试它。Features.initState()如何被调用?是的,我想我发现了问题:在创建features对象之前调用它。如果(features.isCheckInOn)HomeCategory(0,Icons.check,Colors.blue[800],“签入”,[任务(0,“签入”,true),],
  Future<Features> getFeatureStatus(String userID) async {

   Features _features;

   final response =
  await http.post('http://url/api/FeaturesGet',
  headers: {"Content-Type": "application/json", 
             'Accept': 'application/json',},
  body: json.encode({'userID' : userID }));

// If the call to the server was successful, parse the JSON 

      _features = Features.fromJson(json.decode(response.body));



      return _features;



 }