IndexedStack解决了底部导航索引变化时内容持久化的问题。但是当 IndexedStack 的子状态发生变化时,我如何找不到重建 IndexedStack 的方法。仅当应用程序重新启动时,子项的状态更改才会反映出来。
IndexedStack更改时不更新_children。
下面是代码:
Widget myBody() {
Widget myBodyWidgetData = SizedBox.shrink();
if (_isSelectedConnectionReady &&
_selectedConnectionId is int &&
_selectedConnectionId >= 0 &&
_selectedConnection.runtimeType == Connection) {
myBodyWidgetData = IndexedStack(
index: _selectedBottomNavigationIndex,
children: _children,
);
} else if (_isSelectedConnectionReady && _selectedConnectionId < 0) {
final GlobalKey<RefreshIndicatorState> _refreshIndicatorKey =
new GlobalKey<RefreshIndicatorState>();
myBodyWidgetData = RefreshIndicator(
key: _refreshIndicatorKey,
onRefresh: setSelectedConnection,
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Padding(
padding: const EdgeInsets.fromLTRB(10, 20, 10, 20),
child: Text( …Run Code Online (Sandbox Code Playgroud) 当存在特定错误状态接收且列表数据不为空时,我找不到在列内显示对话框警报的方法。警报对话框不涉及任何按钮单击,并且所有在线示例都包含 onTap 按钮。
\n我想在列表数据不为空并且设置了错误标志时显示警报。
\n下面是我的代码:
\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n key: scaffoldKey,\n appBar: _myAppBar(),\n body: RefreshIndicator(\n key: _refreshIndicatorKey,\n onRefresh: handleRefresh,\n child: isListError && ordersListData.isEmpty\n ? _mainErrorWidget()\n : Column(\n children: <Widget>[\n Expanded(\n child: NotificationListener<ScrollNotification>(\n onNotification: (ScrollNotification scrollInfo) {\n if (hasMoreToLoad &&\n !isListLoading &&\n !isListError &&\n scrollInfo.metrics.pixels ==\n scrollInfo.metrics.maxScrollExtent) {\n handleLoadMore();\n }\n },\n child: ListView.builder(\n itemCount: ordersListData.length,\n itemBuilder: (BuildContext context, int index) {\n return Card(\n child: InkWell(\n onTap: () {\n Navigator.push(\n context,\n MaterialPageRoute(\n builder: (context) => OrderDetailsPage(\n …Run Code Online (Sandbox Code Playgroud) 我已经使用flutter_offline库来显示离线和在线消息。问题是我想在一段时间后隐藏在线消息。当状态已连接但经过一段时间后,我无法找到删除容器的方法。
下面是我的代码:
body: OfflineBuilder(
connectivityBuilder: (
BuildContext context,
ConnectivityResult connectivity,
Widget child,
) {
final bool connected = connectivity != ConnectivityResult.none;
return SingleChildScrollView(
scrollDirection: Axis.vertical,
padding: const EdgeInsets.all(0.0),
child: Column(
children: [
AnimatedSwitcher(
duration: const Duration(milliseconds: 350),
child: connected
? Container(
color: Colors.lightGreenAccent[400],
height: 25,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'ONLINE',
style: TextStyle(color: Colors.black),
),
],
))
: Container(
color: Colors.red,
height: 25,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'OFFLINE',
style: TextStyle(color: Colors.white),
),
SizedBox(width: …Run Code Online (Sandbox Code Playgroud)