更新值时,我的小部件的状态不会在颤动中发生变化

时间:2021-02-10 07:39:16

标签: flutter android-studio state-management

我的目标是,当用户在特定日期长按时,他们应该能够输入他们的重量值,并且在提交时,模态底部表格应该关闭,并且更新的重量应该尽快可见因为模态表不在视野中。但它不会发生。

相反,我必须去其他日期并回来查看更改。请帮我。我是 Flutter 的新手。

这是问题的演示:

problem i am facing

代码如下:

void _modalBottomSheetMenu(DateTime dt) {
showModalBottomSheet(
  shape: RoundedRectangleBorder(
    borderRadius: BorderRadius.circular(10.0),
  ),
  context: context,
  isScrollControlled: true,
  builder: (builder) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.spaceEvenly,
      children: [
        Text("Add a weight"),
        Container(
          width: 200.0,
          child: TextField(
            controller: myController,
            keyboardType: TextInputType.number,
            textAlign: TextAlign.center,
            autofocus: true,
            maxLength: 4,
            onSubmitted: (value) {
              weightValue = double.parse(value);
              print("Weight entered is $weightValue");
              print("Date passed is $dt");
              setState(() {
                _events[dt] = [weightValue].toList();
                Navigator.pop(context);
              });

              print(_events[dt][0]);
            },
            decoration: InputDecoration(
                border: OutlineInputBorder(),
                labelText: 'Weight',
                hintText: 'Enter your weight'),
          ),
        ), 
      ],
    );
  },
);
}

BuildEventList : 这包含要打印的权重

import 'package:flutter/material.dart';

class BuildEventList extends StatefulWidget {
  String weight;
  BuildEventList(this.weight);

  @override
  _BuildEventListState createState() => _BuildEventListState();
}

class _BuildEventListState extends State<BuildEventList> {
  @override
  void setState(fn) {
    // TODO: implement setState
    super.setState(fn);
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      decoration: BoxDecoration(
        border: Border.all(width: 0.8),
        borderRadius: BorderRadius.circular(12.0),
      ),
      margin: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 4.0),
      child: Container(
        width: double.infinity,
        child: Center(child: Text("${widget.weight}")),
      ),
    );
  }
}

这就是它的名字:

@override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text(widget.title), actions: [
        IconButton(
          icon: Icon(Icons.add),
          color: Colors.white,
          onPressed: () {},
        )
      ]),
      body: Column(
        mainAxisSize: MainAxisSize.max,
        children: <Widget>[
          _buildTableCalendar(),
          const SizedBox(height: 8.0),
          //_buildButtons(),
          const SizedBox(height: 8.0),
          Expanded(
              child: BuildEventList(_selectedEvents.length > 0
                  ? _selectedEvents[0].toString()
                  : "No weight given!")),
        ],
      ),
    );
  }

0 个答案:

没有答案