Как заставить это состояние работать правильно?

#flutter #dart

Вопрос:

У меня есть код.Существует плавающая кнопка действия, которая имеет быстрый набор.У меня есть две кнопки быстрого набора. Однако у меня есть только кнопка «Удалить».Я хочу, чтобы при нажатии на него текстовые заметки меняли цвет.Я пытался использовать setState, но он работает неправильно.Я не знаю, почему моя программа работает таким образом, потому что все классы находятся в состоянии.Я попытался проверить это с помощью печати в консоли.Я утешаю его, пишу, что хочу, но это не работает

 import 'package:flutter/material.dart';
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:notev2/scr/func.dart';
import 'colors.dart';
import 'variables.dart';
import 'newnote.dart';

class homepage extends StatefulWidget {
 const homepage({Key? key}) : super(key: key);

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

class _homepageState extends State<homepage> {
 @override
 void initState() {
   super.initState();
 }

 @override
 Widget build(BuildContext context) {
   return Scaffold(
     appBar: new AppBar(
       toolbarHeight: 0.0,
     ),
     backgroundColor: dark,
     body: Column(
       children: <Widget>[
         Row(
           children: <Widget>[
             //надпись заметки
             Container(
               margin: EdgeInsets.only(bottom: 35),
               child: Text(
                 "Notes",
                 style: TextStyle(
                   fontSize: 72,
                   color: delmode==0?grey:coral,
                 ),
               ),
             ),
             Container(
               child: Text(
                 "Never Settle",
                 style: TextStyle(color: grey.withOpacity(0.5)),
               ),
             ),
             SizedBox(
               width: 10,
             ), // лупа
             Container(
               margin: EdgeInsets.only(top: 0),
               child: IconButton(
                 icon: Icon(Icons.search_rounded),
                 color: coral,
                 iconSize: 30,
                 onPressed: () {},
               ),
             ),
             Container(
               child: IconButton(
                 icon: Icon(Icons.menu),
                 color: coral,
                 iconSize: 30,
                 onPressed: () {},
               ),
             ),
           ],
         ),
         Expanded(
           child: Expanded(
             child: ListView.builder(
               itemCount: data.length,
               itemBuilder: (BuildContext context, index) {
                 return GestureDetector(
                   child: Container(
                     decoration: BoxDecoration(
                       border: Border.all(
                         color: grey,
                         width: 1,
                       ),
                     ),
                     height: 50,
                     child: Center(
                       child: Text(
                         data[index]['title'],
                         style: TextStyle(
                           fontSize: 35,
                           color: grey,
                         ),
                       ),
                     ),
                   ),
                   onTap: () {
                     //print(index.toString()   " is taped");
                     buff = index;
                     shower(index, data, tContr, dContr);
                     Navigator.pushNamed(context, 'watchpage');
                   },
                 );
                 /*ListTile(
                   title:Text(tList[index]),
                 );*/
               },
             ),
           ),
         ),
         Spacer(),
       ],
     ),
     floatingActionButton:
         /*FloatingActionButton(
       backgroundColor: dark,
       shape: RoundedRectangleBorder(
           side: BorderSide(
               color: Color.fromRGBO(255, 103, 104, 1),
               width: 2,
               style: BorderStyle.solid),
           borderRadius: BorderRadius.circular(50)),
       onPressed: () {
         buff = data.length   1;
         Navigator.pushNamed(context, "newnote");
       },
       child: Icon(
         Icons.add,
         color: coral,
       ),
     ),*/
         _getFAB(),
   );
 }

 Widget _getFAB() {
   return SpeedDial(
     overlayOpacity: 0.0,
     shape: RoundedRectangleBorder(
         side: BorderSide(color: grey, width: 2, style: BorderStyle.solid),
         borderRadius: BorderRadius.circular(50)),
     animatedIcon: AnimatedIcons.menu_close,
     animatedIconTheme: IconThemeData(
       size: 22,
     ),
     backgroundColor: light,
     visible: true,
     curve: Curves.bounceIn,
     children: [
       // FAB 1
       SpeedDialChild(
           child: Icon(Icons.add),
           backgroundColor: light,
           onTap: () {
             buff = data.length   1;
             Navigator.pushNamed(context, "newnote");
           },
           label: 'Button 1',
           labelStyle: TextStyle(
               fontWeight: FontWeight.w500,
               color: Colors.white,
               fontSize: 16.0),
           labelBackgroundColor: light),
       // FAB 2
       SpeedDialChild(
           child: Icon(Icons.delete),
           backgroundColor: light,
           onTap: () {
             setState(() {
               print("delmode"   delmode.toString());
               delmode = !delmode;
             });
           },
           label: 'Button 2',
           labelStyle: TextStyle(
               fontWeight: FontWeight.w500,
               color: Colors.white,
               fontSize: 16.0),
           labelBackgroundColor: light)
     ],
   );
 }
}

 

Комментарии:

1. Разве вы не можете использовать delmode как логическое значение? Почему вам нужно преобразовать в строку раньше? И я в этом не уверен ! delmode работает со строкой.

2. Я так не думаю. Я изменяю его только тогда, когда печатаю результат в консоли. Когда я изменяю значение в программе, delmode является логическим

3. я никогда не использовал этот для сравнения логического delmode==0?серый:коралловый . Что произойдет, если ты перейдешь на это? делмоуд ? серый : коралловый