首页 > 解决方案 > 在小部件之间传递数据

问题描述

我有一个父小部件_CalendarPageState和两个子小部件nameColumnContainer2nameColumn2. 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')
        ],
      ),
    );
  }
}

如何将数据传递给父小部件,以便在两个小部件中都可用?

标签: flutter

解决方案


我只需要listLoc传给nameColumn2


推荐阅读