【发布时间】:2020-01-13 18:55:03
【问题描述】:
编辑
我正在尝试调试一个问题,但我的 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;
}
HTTP 调用
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;
}
根本没有遇到断点
【问题讨论】:
-
您的代码中没有 HTTP 调用。
-
它的特征 = getFeatureStatus(user.userId) 作为特征;我会编辑它并添加它。我什至无法在任何地方设置断点
-
您的邮寄电话似乎没有任何问题。您已经仔细检查过您的 API 是否按预期工作?既然是你自己的API,只有你自己可以测试。
-
features.initState() 是如何被调用的?
-
是的,我想我发现了问题:在创建功能对象之前调用它。 if(features.isCheckInOn) HomeCategory(0, Icons.check, Colors.blue[800], "签入", [Task(0, "签入", true),]),