在我的项目中,我使用Sub indicators()
lastrowlist1 = Range("C1000000").End(xlUp).Row
lastrowlist2 = Range("K1000000").End(xlUp).Row
For i = 5 To lastrowlist1
Range("C" & i).Value = findval
For j = 5 To lastrowlist2
If Range("K" & j).Value <> Range("C" & i).Value Then
Range("K" & j).Interior.ColorIndex = 4
Range("C" & i).Interior.ColorIndex = 4
Else
Range("K" & j).Interior.ColorIndex = 2
Range("C" & i).Interior.ColorIndex = 2
End If
Next j
Next i
End Sub
在两个页面之间切换。
开关的代码是标准代码,使用index和setState在两个页面之间切换,并使用ButtomNavigationBar
数组访问每个页面。
(取自Widget
)
最终
Scaffold
<List
>正文= [Widget
(),firstPage
(), ];body:body [_currentIndex],
,在我的secondPage
中,我想用FAB制作一个secondPage()
,并在每次点击时添加一个图块。 我要保证,我需要使用setState更新ListView.Builder
,但这不是正确的继承方式
我做错了什么,我该如何纠正?
ItemCounter
答案 0 :(得分:1)
您正在使用无状态窗口小部件。您的secondpage()应该是一个有状态的Widget。解决此问题的最简单方法是使用类而不是函数:
class SecondPage extends StatefulWidget {
@override
_SecondPageState createState() => _SecondPageState();
}
class _SecondPageState extends State<SecondPage> {
int _itemCount = 5;
return Scaffold(
body: ListView.builder(
itemCount: _itemCount,
itemBuilder: (context, int index){
return Padding(
padding: EdgeInsets.all(3.0),
child: Card(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(index.toString(), style: TextStyle(fontSize: 30.0),
textAlign: TextAlign.center,),
),
) ,
);
},
),
floatingActionButton: FloatingActionButton(
onPressed:(){
setState((){
_itemCount++;
});
},
child: Icon(Icons.add),
),
);
}
并在列表中:
final List<Widget> body = [ new firstPage(), new secondPage(), ];
答案 1 :(得分:0)
解决了。只需将Widget
函数替换为StafulWidget
。
答案 2 :(得分:0)
将_itemCount变量设置为全局变量,然后使用setState增加_itemCount值
int _itemCount = 5;
Widget build(BuildContext context) {
return Scaffold(
body: ListView.builder(
.....
),
floatingActionButton: FloatingActionButton(
onPressed:(){
setState(() {
_itemCount++;
});
},
child: Icon(Icons.add),),
);;
}