Flutter 颤振:图像在滑动条中丢失
我和你一起工作。 上一页我有2页(搜索和详细信息), 在详细信息页面中,当我向下滚动并使图像不可见时出现问题,然后按下按钮返回,我的图像在搜索页面中丢失。但如果我向下滚动,然后再向上滚动,使图像可见,然后我按下后退按钮,我的图像不会丢失,仍然保持在那里。 这可能令人困惑,但您可以查看GIF了解更多详细信息。 你能帮我吗? 谢谢 这是细节。省道:Flutter 颤振:图像在滑动条中丢失,flutter,dart,flutter-sliver,Flutter,Dart,Flutter Sliver,我和你一起工作。 上一页我有2页(搜索和详细信息), 在详细信息页面中,当我向下滚动并使图像不可见时出现问题,然后按下按钮返回,我的图像在搜索页面中丢失。但如果我向下滚动,然后再向上滚动,使图像可见,然后我按下后退按钮,我的图像不会丢失,仍然保持在那里。 这可能令人困惑,但您可以查看GIF了解更多详细信息。 你能帮我吗? 谢谢 这是细节。省道: 导入“包装:颤振/材料.省道”; 导入“包:flatter_news/model/Berita_model.dart”; 导入“package:flat
导入“包装:颤振/材料.省道”;
导入“包:flatter_news/model/Berita_model.dart”;
导入“package:flatter_news/widget/widget_builder.dart”;
类WartawanDetail扩展StatefulWidget{
伊德瓦塔万国际酒店;
最后一串甘巴瓦塔万;
最终字符串namaWartawan;
WartawanDetail({this.idWartawan,this.gambarWartawan,this.namaWartawan});
@凌驾
_WartawanDetailState createState()=>\u WartawanDetailState();
}
类_WartawanDetailState扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:自定义滚动视图(
条子:[
滑杆(
浮动:是的,
错,,
领先:IconButton(
图标:图标(图标。向左箭头),
onPressed:()=>Navigator.pop(上下文),
),
扩展高度:300.0,
标题:对,
flexibleSpace:FlexibleSpaceBar(
背景:英雄(
标签:widget.idWartawan,
子:容器(
装饰:盒子装饰(
图像:装饰图像(
图:AssetImage(widget.gambarWartawan),
安装:BoxFit.盖),
),
子:堆栈(
儿童:[
定位(
底部:10,
左:10,,
儿童:材料(
颜色:颜色。透明,
孩子:芯片(
背景颜色:Colors.blue,
标签样式:文本样式(颜色:Colors.white),
标签:文本(widget.namaWartawan),
),
),
),
定位(
底部:10,
右:10,,
儿童:材料(
颜色:颜色。透明,
孩子:芯片(
背景颜色:Colors.blue,
标签样式:文本样式(颜色:Colors.white),
标签:文本(“2贝里塔”),
),
),
),
],
),
),
),
),
行动:[
图标按钮(
图标:图标(更多图标),
按下时:()=>“”,
),
],
),
SliverFixedExtentList(
itemExtent:MediaQuery.of(context).size.height,
委托:SliverChildListDelegate(
[
容器(
填充:边缘设置。全部(8),
子项:ListView.builder(
收缩膜:对,
物理学:NeverscrollableScroll物理学(),
itemCount:beritas.length,
itemBuilder:newsBuilderHome),
),
],
),
)
],
),
);
}
}
这是我的搜索
Widget-wartawanBuilderSearch(BuildContext,int-index){
主题数据localTheme=Theme.of(上下文);
返回容器(
保证金:全部(8),
子:列(
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
扩大(
子:容器(
孩子:英雄(
标记:wartawans[index].idWartawan,
儿童:材料(
颜色:颜色。透明,
孩子:InkWell(
onTap:()=>Navigator.push(
上下文
页面转换(
类型:PageTransitionType.downToUp,
孩子:瓦塔旺德雷(
idWartawan:wartawans[index]。idWartawan,
甘巴瓦塔万:瓦塔万[索引]。甘巴瓦塔万,
namaWartawan:wartawans[索引]。namaWartawan,
),
),
),
孩子:圆环星(
背景颜色:Colors.red,
半径:50,
背景图片:
资产评估(瓦塔万[索引].gambarWartawan),
),
),
),
),
),
),
容器(
子对象:对齐(
对齐:对齐。左下角,
子:文本(
瓦塔万[索引]。纳马瓦塔万,
样式:localTheme.textTheme.caption
.copyWith(fontSize:14,fontWeight:fontWeight.bold),
溢出:TextOverflow.省略号,
),
),
)
],
),
);
}
您可以在单击图像的位置共享列表的代码吗?@AakashKumar当然可以,请查看我的更新问题。您好,我用您的代码和我自己的代码进行了尝试。奇怪的是,当我在4个月前这样做的时候,它工作得很好,但当我现在尝试的时候,它不工作了。这似乎是最新发布的颤振版本。看到这个了吗
import 'package:flutter/material.dart';
import 'package:flutter_news/model/Berita_model.dart';
import 'package:flutter_news/widget/Widget_builder.dart';
class WartawanDetail extends StatefulWidget {
final int idWartawan;
final String gambarWartawan;
final String namaWartawan;
WartawanDetail({this.idWartawan, this.gambarWartawan, this.namaWartawan});
@override
_WartawanDetailState createState() => _WartawanDetailState();
}
class _WartawanDetailState extends State<WartawanDetail> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: CustomScrollView(
slivers: <Widget>[
SliverAppBar(
floating: true,
pinned: false,
leading: IconButton(
icon: Icon(Icons.arrow_left),
onPressed: () => Navigator.pop(context),
),
expandedHeight: 300.0,
centerTitle: true,
flexibleSpace: FlexibleSpaceBar(
background: Hero(
tag: widget.idWartawan,
child: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage(widget.gambarWartawan),
fit: BoxFit.cover),
),
child: Stack(
children: <Widget>[
Positioned(
bottom: 10,
left: 10,
child: Material(
color: Colors.transparent,
child: Chip(
backgroundColor: Colors.blue,
labelStyle: TextStyle(color: Colors.white),
label: Text(widget.namaWartawan),
),
),
),
Positioned(
bottom: 10,
right: 10,
child: Material(
color: Colors.transparent,
child: Chip(
backgroundColor: Colors.blue,
labelStyle: TextStyle(color: Colors.white),
label: Text("2 Berita"),
),
),
),
],
),
),
),
),
actions: <Widget>[
IconButton(
icon: Icon(Icons.more_horiz),
onPressed: () => "",
),
],
),
SliverFixedExtentList(
itemExtent: MediaQuery.of(context).size.height,
delegate: SliverChildListDelegate(
[
Container(
padding: EdgeInsets.all(8),
child: ListView.builder(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
itemCount: beritas.length,
itemBuilder: newsBuilderHome),
),
],
),
)
],
),
);
}
}
Widget wartawanBuilderSearch(BuildContext context, int index) {
ThemeData localTheme = Theme.of(context);
return Container(
margin: EdgeInsets.all(8),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Expanded(
child: Container(
child: Hero(
tag: wartawans[index].idWartawan,
child: Material(
color: Colors.transparent,
child: InkWell(
onTap: () => Navigator.push(
context,
PageTransition(
type: PageTransitionType.downToUp,
child: WartawanDetail(
idWartawan:wartawans[index].idWartawan,
gambarWartawan: wartawans[index].gambarWartawan,
namaWartawan: wartawans[index].namaWartawan,
),
),
),
child: CircleAvatar(
backgroundColor: Colors.red,
radius: 50,
backgroundImage:
AssetImage(wartawans[index].gambarWartawan),
),
),
),
),
),
),
Container(
child: Align(
alignment: Alignment.bottomLeft,
child: Text(
wartawans[index].namaWartawan,
style: localTheme.textTheme.caption
.copyWith(fontSize: 14, fontWeight: FontWeight.bold),
overflow: TextOverflow.ellipsis,
),
),
)
],
),
);
}