flutter - 在小部件之间传递数据
问题描述
我有一个父小部件_CalendarPageState
和两个子小部件nameColumnContainer2
和nameColumn2
. int listLoc = list.indexOf(time);
我在里面有一个数据nameColumnContainer2
,我想传递给nameColumn2
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'update_green_page.dart';
import '../data/repository_service_addcash.dart';
import '../models/addcash.dart';
import 'widget_ui/choice_chip.dart';
class CalendarPage extends StatefulWidget {
@override
_CalendarPageState createState() => _CalendarPageState();
}
class _CalendarPageState extends State<CalendarPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
child: Row(
children: nameColumnContainer2(),
),
),
],
),
),
);
}
List<Widget> nameColumnContainer2() {
var list = <DateTime>[];
DateTime start = DateTime(2019, 12, 01);
final end = DateTime(2021, 12, 31);
while (start.isBefore(end)) {
list.add(start);
start = start.add(const Duration(days: 1));
}
var listDates = list.map((DateTime time) {
return DateFormat("MM-dd-yyyy").format(time);
}).toList();
return list.map((DateTime time) {
int listLoc = list.indexOf(time); //NEED TO PASS THIS DOWN TO nameColumn2
return Container(
decoration: BoxDecoration(border: Border.all(color: Colors.blue)),
width: 120,
child: ListView(
shrinkWrap: true,
children: <Widget>[
FutureBuilder<List<AddCash>>(
future: future,
builder: (context, snapshot) {
if (snapshot.hasData) {
return Column(
children:
snapshot.data.map((todo) => nameColumn2(todo)).toList(),
);
} else {
return SizedBox();
}
},
),
],
),
);
}).toList();
}
Widget nameColumn2(AddCash addCash) {
return Container(
alignment: Alignment.center,
width: 120.0,
height: 60.0,
color: Colors.green,
margin: EdgeInsets.all(4.0),
child: Row(
children: <Widget>[
Text('${addCash.amount}'),
listLoc % 6 == 0
? Text('${addCash.amount}')
: listLoc % 2 == 0 ? Text('no') : Text('d')
],
),
);
}
}
如何将数据传递给父小部件,以便在两个小部件中都可用?
解决方案
我只需要listLoc
传给nameColumn2
推荐阅读
- php - 如何在数据库中具有相同ID的多行中插入多个复选框值
- java - Selenium 和 WhatsApp 用于向特定电话号码发送消息
- scala - 在 Scala 中建立列表
- sql - 如何编写用于连接具有多个条件的表的 SQL 查询
- wordpress - 仅在单页中不起作用查询(wordpress)
- php - 导航栏中的链接未指向适当的页面
- javascript - Webpack - TypeError: this[NS] is not a function at childCompiler.runAsChild
- css - 跟随 svg 运动路径时的偏移
- emv - 缺少 EMV 颁发者公钥指数,但需要
- excel - Excel VBA 用组合框替换数据验证列表