我開始使用 Flutter,從創建 SliverPersistentHeader 的那一刻起就出現了這個錯誤。我試圖找到一個解釋,但沒有。
錯誤是否來自 Sliver ?
我沒有經常出現錯誤,但我必須連續保存我的作業 2 次才能正常顯示,否則錯誤會再次出現
另外,它只是除錯時的錯誤還是可以顯示在用戶眼中?
我的頁面:
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class homepage extends StatefulWidget{
const homepage({Key? key}) : super(key: key);
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return homepageState();
}
}
const BackgroundColor = const Color(0xFFF2F2F2);
class homepageState extends State<homepage> {
@override
Widget build(BuildContext context) {
// TODO: implement build
return Scaffold(
backgroundColor: Colors.white,
body: CustomScrollView(
slivers: <Widget>[
SliverPersistentHeader(
delegate: _topBarContent(),
pinned: true,
),
SliverToBoxAdapter(
child: Container(
color: BackgroundColor,
padding: EdgeInsets.all(20),
child: Text(
"Lorem ipsum"
),
)
)
],
),
);
}
}
const _maxHeaderExtent = 280.0;
const _minHeaderExtent = 100.0;
const _maxIconSize = 150.0;
const _minIconSize = 60.0;
class _topBarContent extends SliverPersistentHeaderDelegate{
@override
Widget build(BuildContext context, double shrinkOffset, bool overlapsContent) {
// TODO: implement build
final size = MediaQuery.of(context).size;
return Container(
color: Colors.white,
padding: EdgeInsets.all(20),
child: Stack(
children: <Widget>[
Positioned(
top: 50.0,
left: 0,
height: _maxIconSize,
child: Column(
children: <Widget>[
Text(
"My text",
textAlign: TextAlign.start,
style: TextStyle(
fontSize: 20,
),
),
Text(
"My second text",
textAlign: TextAlign.start,
style: TextStyle(
fontSize: 20
),
)
],
),
),
Positioned(
bottom: 20.0,
left: 35.0,
height: _maxIconSize,
child: Icon(
Icons.cloud_outlined,
size: 50,
),
)
],
),
);
}
@override
// TODO: implement maxExtent
double get maxExtent => _maxHeaderExtent;
@override
// TODO: implement minExtent
double get minExtent => _minHeaderExtent;
@override
bool shouldRebuild(covariant SliverPersistentHeaderDelegate oldDelegate) {
// TODO: implement shouldRebuild
throw UnimplementedError();
}
}
在這里,錯誤告訴我一個內部檔案顫動,所以錯誤必須來自其他:
package flutter/src/widgets/framework.dart failed assertion: line 4479 pos 14
uj5u.com熱心網友回復:
可能是因為你還沒有實作shouldRebuild:
@override
bool shouldRebuild(covariant SliverPersistentHeaderDelegate oldDelegate) {
// TODO: implement shouldRebuild
throw UnimplementedError();
}
如果有任何更改需要標頭重新繪制自身,則應回傳 true,否則回傳 false。在您的情況下,您似乎可以回傳false:
@override
bool shouldRebuild(covariant SliverPersistentHeaderDelegate oldDelegate) {
return false;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/449686.html
下一篇:使用SetState更新變數資料
