Flutter 如何在flatter上更改RaisedButton的文本时将类中的列表项添加到另一个列表中
我将屏幕划分为多个块,并在我的主页中添加了一个项目列表,我的listView就是用JSON构建listView的人。 Raised按钮以“iniciar”开头,意思是“开始”,当我单击Raised按钮时,它会转到“Finalizar”(意思是完成)。当这种情况发生时,我想将这个特定的项目添加到我的第二个屏幕中。我贴了一张屏幕的照片 列表视图:Flutter 如何在flatter上更改RaisedButton的文本时将类中的列表项添加到另一个列表中,flutter,dart,Flutter,Dart,我将屏幕划分为多个块,并在我的主页中添加了一个项目列表,我的listView就是用JSON构建listView的人。 Raised按钮以“iniciar”开头,意思是“开始”,当我单击Raised按钮时,它会转到“Finalizar”(意思是完成)。当这种情况发生时,我想将这个特定的项目添加到我的第二个屏幕中。我贴了一张屏幕的照片 列表视图: class ProdutoListView extends StatefulWidget { List<Produto> produtos
class ProdutoListView extends StatefulWidget {
List<Produto> produtos;
List<Produto> startProd;
ProdutoListView(this.produtos);
@override
_ProdutoListViewState createState() => _ProdutoListViewState();
}
class _ProdutoListViewState extends State<ProdutoListView> {
Timer _timer;
@override
Widget build(BuildContext context) {
return ListView.builder(
shrinkWrap: true,
itemCount: widget.produtos.length,
itemBuilder: (BuildContext context, int index) {
return makeCard(index, context);
},
);
}
Card makeCard(int index, context) {
Produto prod = widget.produtos[index];
return Card(
child: Container(
color: Colors.black,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
// child: prod.tempo > 10 ? color: Colors.red, : color: Colors.white,
color: Colors.white,
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Flexible(
child: Text(
"Comanda:" + prod.comanda,
style: TextStyle(fontSize: 22),
),
),
Flexible(
child: Text(
"Mesa:" + prod.mesa,
overflow: TextOverflow.ellipsis,
style: TextStyle(fontSize: 22),
),
)
],
),
),
),
Padding(
padding: const EdgeInsets.all(16.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(
flex: 50,
child: Text(
">" + prod.qntd,
style: TextStyle(fontSize: 20, color: Colors.white),
),
),
Expanded(
flex: 50,
child: Text(
prod.produto,
style: TextStyle(fontSize: 26, color: Colors.white),
),
)
],
),
),
Padding(
padding: const EdgeInsets.all(16.0),
child: Container(
margin: EdgeInsets.only(left: 30),
child: Text(
prod.observacao,
style: TextStyle(fontSize: 20, color: Colors.white),
),
),
),
Container(
color: Colors.black12,
child: Padding(
padding: const EdgeInsets.all(5.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
RaisedButton(
child: Text(
prod.estado,
style: TextStyle(color: Colors.black),
),
color: Colors.white,
onPressed: () {
_initialize(context, prod);
Produto startProd = widget.produtos[index];
startProd = prod;
print("produto iniciado: $startProd[]");
}),
Flexible(
child: Text(
"Tempo: " + prod.tempo.toString(),
overflow: TextOverflow.ellipsis,
style: TextStyle(fontSize: 16, color: Colors.red),
),
)
],
),
),
),
],
),
),
);
}
void _startTimer(prod) {
prod.tempo = 0;
if (_timer != null) {
_timer.cancel();
}
_timer = Timer.periodic(Duration(seconds: 1), (timer) {
setState(() {
if (prod.estado == "Finalizar") {
prod.tempo++;
//_add(prod);
} else {
_timer.cancel();
}
});
});
}
_initialize(context, prod) {
setState(() {
prod.estado = "Finalizar";
});
_startTimer(prod);
}
}
类ProdutoListView扩展StatefulWidget{
列出产品清单;
列出startProd;
ProdutoListView(this.produtos);
@凌驾
_ProdutoListViewState createState()=>\u ProdutoListViewState();
}
类_ProdutoListViewState扩展状态{
定时器(u定时器),;
@凌驾
小部件构建(构建上下文){
返回ListView.builder(
收缩膜:对,
itemCount:widget.produtos.length,
itemBuilder:(构建上下文,int索引){
返回makeCard(索引、上下文);
},
);
}
卡片制作卡片(int索引,上下文){
Produto prod=widget.Produto[index];
回程卡(
子:容器(
颜色:颜色,黑色,
子:列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
容器(
//子项:生产速度>10?颜色:Colors.red,:color:Colors.white,
颜色:颜色,白色,
孩子:填充(
填充:常数边集全部(16.0),
孩子:排(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
灵活的(
子:文本(
“科曼达:”+prod.Comanda,
样式:TextStyle(字体大小:22),
),
),
灵活的(
子:文本(
“台面:”+prod.Mesa,
溢出:TextOverflow.省略号,
样式:TextStyle(字体大小:22),
),
)
],
),
),
),
填充物(
填充:常数边集全部(16.0),
孩子:排(
mainAxisAlignment:mainAxisAlignment.start,
儿童:[
扩大(
弹性:50,
子:文本(
“>”+prod.qntd,
样式:TextStyle(字体大小:20,颜色:Colors.white),
),
),
扩大(
弹性:50,
子:文本(
prod.produto,
样式:TextStyle(字体大小:26,颜色:Colors.white),
),
)
],
),
),
填充物(
填充:常数边集全部(16.0),
子:容器(
页边距:仅限边集(左:30),
子:文本(
生产商observacao,
样式:TextStyle(字体大小:20,颜色:Colors.white),
),
),
),
容器(
颜色:颜色。黑色,
孩子:填充(
填充:常数边集全部(5.0),
孩子:排(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
升起的按钮(
子:文本(
普罗德·埃斯塔多,
样式:TextStyle(颜色:Colors.black),
),
颜色:颜色,白色,
已按下:(){
_初始化(上下文、prod);
Produto startProd=widget.Produto[index];
startProd=prod;
打印(“produto iniciado:$startProd[]);
}),
灵活的(
子:文本(
“节奏:”+prod.Tempo.toString(),
溢出:TextOverflow.省略号,
样式:TextStyle(字体大小:16,颜色:Colors.red),
),
)
],
),
),
),
],
),
),
);
}
void_startTimer(prod){
生产速度=0;
如果(_timer!=null){
_timer.cancel();
}
_计时器=计时器。周期性(持续时间(秒:1),(计时器){
设置状态(){
如果(prod.estado==“Finalizar”){
prod.tempo++;
//_添加(prod);
}否则{
_timer.cancel();
}
});
});
}
_初始化(上下文、产品){
设置状态(){
prod.estado=“Finalizar”;
});
_startTimer(prod);
}
}
主页:
[class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
List<Produto> produto;
List<Produto> startProd;
final _bloc = ProdutoBloc();
final produtoiniciado = ProdutoBloc();
@override
void initState() {
super.initState();
_bloc.listarProdutos();
}
@override
Widget build(BuildContext context) {
return Row(
children: \[
SizedBox(
height: MediaQuery.of(context).size.height,
width: MediaQuery.of(context).size.width / 2,
child: _getData(),
//child: _tamanhoProdutoList(context),
//child: _tamanhoProdutoList(context),
),
SizedBox(
height: MediaQuery.of(context).size.height,
width: MediaQuery.of(context).size.width / 2,
child: _getPedidosIniciados(),
),
\],
);
}
_getPedidosIniciados() {
return StreamBuilder(builder: (context, snapshot) {
if (!snapshot.hasData) {
return Material(
color: Colors.white,
child: Center(
child: Text("Nenhum pedido foi iniciado"),
),
);
}
return RefreshIndicator(
onRefresh: _onRefresh,
child: ProdutoListView(
startProd,
),
);
});
}
StreamBuilder<List<Produto>> _getData() {
return StreamBuilder(
stream: _bloc.stream,
builder: (context, snapshot) {
if (snapshot.hasError) {
return TextError("Não foi possivel buscar os dados!");
}
if (!snapshot.hasData) {
return Center(
child: CircularProgressIndicator(),
);
}
produto = snapshot.data;
return RefreshIndicator(
onRefresh: _onRefresh,
child: ProdutoListView(
produto,
),
);
});
}
Future<void> _onRefresh() {
return _bloc.listarProdutos();
}
[类主页扩展StatefulWidget{
@凌驾
_HomePageState createState()=>\u HomePageState();
}
类_HomePageState扩展状态{
产品清单;
列出startProd;
final _bloc=ProdutoBloc();
最终produtoiniciado=ProdutoBloc();
@凌驾
void initState(){
super.initState();
_bloc.listarProdutos();
}
@凌驾
小部件构建(构建上下文){
返回行(
儿童:\[
大小盒子(
高度:MediaQuery.of(context).size.height,
宽度:MediaQuery.of(context).size.width/2,
子项:_getData(),
//儿童:_tamanhoProdutoList(上下文),
//儿童:_tamanhoProdutoList(上下文),
),
大小盒子(
高度:MediaQuery.of(context).size.height,
宽度:MediaQuery.of(context).size.width/2,
子项:_getPedidosIniciados(),
),
\],
);
}
_GetPedidosisniciados(){
返回StreamBuilder(生成器:(上下文,快照){
如果(!s
class ProdutoListBloc extends Bloc<Produto, List<Produto>> {
ProdutoListBloc(List<Produto> initialState) : super(initialState);
@override
List<Produto> get initialState => new List<Produto>();
List<Produto> produtos = new List<Produto>();
@override
Stream<Produto> mapEventToState(
Produto produto,
) async* {
produtos.add(produto);
yield produtos;
}
}
BlocProvider.of<ProdutoListBloc>(context).add(produto);