Flutter - несколько иконок меняли цвета каждого значка - PullRequest
1 голос
/ 18 сентября 2019

В моем приложении 4 иконки в нижней панели, мне нужно изменить цвет иконки с серого на белый, я следовал за этим вопрос , но когда я нажимаю любую иконку, все иконки меняют цвет наВ то же время, мне нужно, когда нажмите, например, значок (Домой), просто нажмите значок (Домой).

Как я могу это сделать ??

И какя могу установить домашнюю иконку всегда на первой странице, не нажимая ??(Я имею в виду, когда пользователь открывает приложение, показывает ему домашнюю страницу (белый значок)).

Код:

import 'package:flutter/material.dart';

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {

  _HomePageState();

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
  }
  bool isPressed = false;

  _pressed() {
  var newVal = true;
  if(isPressed) {
    newVal = false;
  } else {
    newVal = true;
  }

  setState((){
  isPressed = newVal;
  });
}

@override
Widget build(BuildContext context) {
  return Scaffold(

    appBar: AppBar(
      title: Image.asset('assets/logo.png', fit: BoxFit.cover,),
      centerTitle: true,
      backgroundColor: Colors.grey[900],
    ),
    bottomNavigationBar: BottomAppBar(
      color: Colors.grey[900],
      child: Row(
        mainAxisSize: MainAxisSize.max,
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: <Widget>[
          IconButton(icon: Icon(Icons.info), color: isPressed ? Colors.white:Colors.grey[600], iconSize: 30, onPressed: () {
          setState(() {
            _pressed();
          });
        }),
          IconButton(icon: Icon(Icons.local_mall), color: isPressed ? Colors.white:Colors.grey[600], iconSize: 30, onPressed: () {
          setState(() {
            _pressed();
          });
        }),
          IconButton(icon: Icon(Icons.bookmark), color: isPressed ? Colors.white:Colors.grey[600], iconSize: 30, onPressed: () {
          setState(() {
            _pressed();
          });
        }),
          IconButton(icon: Icon(Icons.home), color: isPressed ? Colors.white:Colors.grey[600], iconSize: 30, onPressed: () {
          setState(() {
            _pressed();
          });
        }),
      ],
    ),
  ),

);
}
}

Ответы [ 2 ]

1 голос
/ 19 сентября 2019

Вы можете сделать это так!действительно лучший трюк для переключения цвета значка

   IconButton( icon:  ImageIcon(AssetImage("images/edit.png",) ,size: 30,),
                            disabledColor: Color.fromRGBO(32, 127, 195, 1),
                            color: Colors.white,
                            onPressed: a == 1
                                ? null
                                : () => setState(() => a = 1)),
 IconButton( icon:   ImageIcon(AssetImage("images/notify.png",) ,size: 30,),
                            disabledColor: Color.fromRGBO(32, 127, 195, 1),
                            color: Colors.white,
                            onPressed: a == 2
                                ? null
                                : () => setState(() {
                                      a = 2;
                                      dateTemp = '';
                                    })),
0 голосов
/ 18 сентября 2019

вы используете одну и ту же переменную bool для каждой кнопки.Попробуйте использовать целочисленный индекс (1-4 для каждой кнопки, и каждое нажатие кнопки устанавливает состояние с целым числом, установленным на его индекс), а затем проверьте, какой индекс нажимается при определении цвета.

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