【发布时间】:2021-11-13 07:56:33
【问题描述】:
这是我的代码的一部分。 我想调用搜索屏幕类并将“客户端”传递给它。 所以我在列表中调用了方法读取客户端而不是 SearchScreen。 当我必须在方法中删除未来时,我遇到了这个错误:
The body might complete normally, causing 'null' to be returned, but the return type is a potentially non-nullable type
当我必须在方法中使用未来时,我得到了这个:
error: The element type 'Future<dynamic>' can't be assigned to the list type 'Widget'. (list_element_type_not_assignable at
那么如何在导航栏的列表中调用搜索屏类呢?
class MyNavigationBar extends StatefulWidget {
Future<void> readClient() async{
await initHiveForFlutter();
final HttpLink httpLink = HttpLink("https://test.server.ir/graphql/");
final AuthLink authLink = AuthLink(
getToken: () async => 'Bearer <YOUR_PERSONAL_ACCESS_TOKEN>',
);
final Link link = authLink.concat(httpLink);
ValueNotifier<GraphQLClient> client = ValueNotifier(
GraphQLClient(
link: link,
cache: GraphQLCache(store: HiveStore()),
),
);
runApp(SearchScreen(client: client));
}
@override
State<StatefulWidget> createState() {
return _MyNavigationBar();
}
}
这部分,在导航栏中有一个调用类的列表:
class _MyNavigationBar extends State<MyNavigationBar> {
int _currentIndex = 0;
List<Widget> _pages = [
ExploreScreen(),
MyNavigationBar().readClient()!, // this
LibraryScreen(),
ProfileScreen(),
];
}
【问题讨论】:
-
你能包括你的身体小部件吗?是否有任何特定原因要在未来运行您的应用程序`runApp(MaterialApp(home: app));`?
-
我已经编辑过了。小部件只显示底部导航栏。
-
为什么你使用
runAppinsidewidget 像runApp(SearchScreen(client: client));,有什么具体原因吗? -
只想调用 SearchScreen 并将客户端传递给它
-
您可以使用 Navigator 代替
runApp。
标签: flutter dart widget client future