Списки дротиков - я создал список виджетов и добавил виджет под названием «StarterDayTile», который отлично работает, но не может быть удален в следующем операторе if - PullRequest
0 голосов
/ 30 марта 2020

Я не могу удалить 'StarterDayTile' в строке, в которой я говорю dayList.remove (StarterDayTile ());

Это то место, откуда я изначально сделал снимок экрана: Очевидно, мне нужно добавить гораздо больше деталей, потому что мой пост - просто код, и я не знаю, что добавить, поэтому сейчас я просто пишу случайные вещи, чтобы передать боту, который мешает я от публикации, я надеюсь, что это работает сейчас.

import 'package:auto_size_text/auto_size_text.dart';
import 'package:flutter/material.dart';
import 'package:moody/data_screen.dart';
import 'package:moody/starter_day_tile.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:page_transition/page_transition.dart';
import 'day_tile.dart';

class HomeScreen extends StatefulWidget {

  final String displayDate;
  final String displayEmoji;
  final int displayHapp;
  HomeScreen({this.displayHapp, this.displayDate, this.displayEmoji});

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

List<Widget> dayList = [];

class _HomeScreenState extends State<HomeScreen> {

@override
  void initState() {
    super.initState();
    if (widget.displayEmoji != null && widget.displayDate != null && widget.displayHapp != null){
      print('2');
      setState(() {
        dayList.insert(0, DayTile(date: widget.displayDate, emoji: widget.displayEmoji, happ: widget.displayHapp));
      });
    }
    if (dayList.length == 0){
      dayList.add(StarterDayTile());
    }
    else if (dayList.length == 2){
      dayList.remove(StarterDayTile());
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: FloatingActionButton(
        backgroundColor: Colors.indigoAccent,
        onPressed: () {
          FocusScope.of(context).requestFocus(FocusNode()); // Keyboard down
          Navigator.pushReplacement(
              context,
              PageTransition(
                  type: PageTransitionType.rightToLeftWithFade,
                  child: DataScreen()));
        },
        child: Icon(Icons.message),
      ),
      backgroundColor: Colors.white12,
      appBar: PreferredSize(
        preferredSize: Size.fromHeight(60),
        child: Hero(
          tag: 'hero1',
          child: AppBar(
            elevation: 15,
            backgroundColor: Colors.indigoAccent,
            automaticallyImplyLeading: false,
            title: Center(
              child: Text(
                'Moody',
                style: TextStyle(fontFamily: 'Baloo', fontSize: 35),
              ),
            ),
            shape: RoundedRectangleBorder(
              borderRadius: BorderRadius.vertical(
                bottom: Radius.circular(20),
              ),
            ),
            leading: Padding(
              child: IconButton(icon: Icon(Icons.menu), onPressed: () {}),
              padding: EdgeInsets.only(right: 0, left: 10),
            ),
            actions: <Widget>[
              Padding(
                  padding: EdgeInsets.only(right: 10, left: 0),
                  child: IconButton(
                    icon: Icon(Icons.pie_chart),
                    onPressed: () {},
                  )),
            ],
          ),
        ),
      ),
      body: ListView.builder(
        reverse: false,
        scrollDirection: Axis.vertical,
        itemCount: dayList.length,
        itemBuilder: (context, index) {
          return dayList[index];
        },
      ),
    );
  }
}

Ответы [ 2 ]

0 голосов
/ 30 марта 2020

решено !!

Я сделал bool с именем startDayTileExists и сделал его глобальной переменной, а затем, когда я добавил StarterDayTile в список, я сделал его равным true, а затем я изменил dayList.remove () на dayList.removeAt (1 ); но сделал дополнительное требование в if, если startDayTileExists должен был быть равен true, тогда в if, если я удалил его, и сделал startDayTileExists равным false снова.

Спасибо за вашу помощь!

0 голосов
/ 30 марта 2020

Попробуйте это; так как это первый объект, который вы хотите удалить

    dayList.removeAt(0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...