簡體   English   中英

Stateful Widget 上的提供程序 - 參數類型問題

[英]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')),
              ),
            )),
      );
    },
  );
}

該錯誤引用了兩個不同的問題,我將在下面嘗試解釋:

Null -> 小部件

此錯誤是由於構建器回調 function 未返回任何內容而導致的,但預計會返回一個Widget 這個Widget顯示在應用程序的用戶界面中,與從覆蓋的build方法返回一個Widget非常相似。 有關更多信息,請參見此處此處

(BuildContext) -> (BuildContext, 小部件)

此錯誤是由於構建器回調 function 只有一個參數,但需要兩個參數引起的。 第二個參數是子Widget ,如果你在樹中有一個特別大的子Widget並且不需要每次 state 更改時重新創建,則可以使用它。 有關更多信息,請參見此處此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM