[英]Provider on Stateful Widget - issue with parameter type
我有一個 class RedditAPIService,我在其中放置了與 Reddit 的 DRAW 插件相關的所有項目方法。
我在無狀態小部件中為 class 創建了 object。 (在 class _RedditAuthState 下方擴展 State 部分)
RedditAPIService reddit = RedditAPIService();
我需要這個 reddit object 在下游的多個小部件上可用,所以我想使用 Provider 來公開 object:
@override
Widget build(BuildContext context) {
return Provider<RedditAPIService>(
create: (_) => RedditAPIService(),
builder: (context) {
Scaffold(
appBar: GlobalAppBar(
appbarTitle: 'Authorize ReadStories',
),
body: SafeArea(
child: Center(
child: haveRedditAuthCode
? CircularProgressIndicator()
: WebviewScaffold(
url: reddit.getAuthURL(),
hidden: true,
// initialChild: Center(child: Text('data')),
),
)),
);
},
);
}
}
我目前收到錯誤:
“錯誤:參數類型'Null Function(BuildContext)'不能分配給參數類型'Widget Function(BuildContext,Widget)'。”
我究竟做錯了什么?
我相信您收到此錯誤是因為您沒有從builder
回調 function 中返回任何內容,因此錯誤消息中的Null
。 嘗試在Scaffold
小部件之前添加return
並將child
參數添加到回調 function 如下:
@override
Widget build(BuildContext context) {
return Provider<RedditAPIService>(
create: (_) => RedditAPIService(),
builder: (context, child) {
return Scaffold(
appBar: GlobalAppBar(
appbarTitle: 'Authorize ReadStories',
),
body: SafeArea(
child: Center(
child: haveRedditAuthCode
? CircularProgressIndicator()
: WebviewScaffold(
url: reddit.getAuthURL(),
hidden: true,
// initialChild: Center(child: Text('data')),
),
)),
);
},
);
}
該錯誤引用了兩個不同的問題,我將在下面嘗試解釋:
此錯誤是由於構建器回調 function 未返回任何內容而導致的,但預計會返回一個Widget
。 這個Widget
顯示在應用程序的用戶界面中,與從覆蓋的build
方法返回一個Widget
非常相似。 有關更多信息,請參見此處和 此處。
此錯誤是由於構建器回調 function 只有一個參數,但需要兩個參數引起的。 第二個參數是子Widget
,如果你在樹中有一個特別大的子Widget
並且不需要每次 state 更改時重新創建,則可以使用它。 有關更多信息,請參見此處和此處。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.