Как я могу наложить границу изображения на изображение в flutter?

#flutter

Вопрос:

При этом всякий раз, когда я нажимаю на другой объект, такой как танк или истребитель, в это время эта золотая граница появляется на этом объекте и скрывается от первого объекта.

введите описание изображения здесь

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

1. С какой проблемой вы столкнулись?

2. Добавьте свой код. Что вы пробовали до сих пор?

3. Nisarg вы можете использовать список логических значений со всеми значениями false, кроме выбранного, и соответственно отобразить границу. И предположим, что пользователь нажимает на 3-е изображение, затем в индексе 2 вам нужно сделать логическое значение как true, а другие как false

4. Привет, Африди Кайал, как я могу опубликовать код, чтобы показать вам, можете ли вы меня направить?

5. Привет, Дипак, можешь показать, потому что я порхаю-это новая технология для меня, и я новичок, поэтому я не знаю, как я могу внедрить твое мнение в свой код

Ответ №1:

Похоже, вы хотите добавить еще одно изображение на фоновое изображение (например, ваши значки). Вы можете использовать Stack для решения своей проблемы:

 Stack(
  children: <Widget>[
    Image1 (background),
    Image2 (border)
  ],
)
 

обратите внимание, что вы должны следовать приоритету! потому что стек ставит своих потомков друг над другом.

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

1. Как я могу поместить стек в панель вкладок

2. в панели вкладок вы должны предоставить виджет! и стек тоже генерирует виджет. Таким образом, вы можете предоставить Stack в качестве входных данных для TabBar . для получения дополнительной информации поделитесь своим кодом, чтобы я мог вам помочь.

3. да, как я могу поделиться кодом, я здесь новичок, поэтому я не знаю многих вещей в Stackoverflow, не могли бы вы подсказать мне, как я могу это сделать

4. вы можете поделиться им с помощью репозитория GitHub (и поделиться ссылкой) или добавить свой код непосредственно здесь в другом комментарии или ответе.

5. Я разместил свой код здесь, если вам нужны изображения, которые я использовал, скажите мне, и я также поделюсь этим

Ответ №2:

     import 'package:flutter/material.dart';

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

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

class Categories2State extends State<Categories2> {
  @override
  Widget build(BuildContext context) {
    return Container(
      margin: EdgeInsets.only(
          top: MediaQuery.of(context).size.height / 50,
          left: MediaQuery.of(context).size.width / 12,
          right: MediaQuery.of(context).size.width / 12),
      child: TabBar(
        isScrollable: true,
        unselectedLabelColor: Colors.white,
        labelColor: Colors.red,
        indicatorColor: Colors.transparent,
        indicatorWeight: 2,
        onTap: (index) {
          switch (index) {
            case 0:
              break;
            case 1:
              // ignore: unnecessary_statements
              Colors.red;
              break;
            case 2:
              // ignore: unnecessary_statements
              Icons.label;
              break;
            default:
          }
        },
        tabs: [
          new Container(
            child: new Tab(
              icon: Image.asset(
                'assets/images/tank.png',
                width: 28,
                height: 28,
              ),
              child: Text(
                'Tank',
                style: TextStyle(fontSize: 12),
              ),
            ),
          ),
          new Container(
            child: new Tab(
              icon: Image.asset(
                'assets/images/fighter.png',
                width: 28,
                height: 28,
              ),
              child: Text(
                'Fighter',
                style: TextStyle(fontSize: 12),
              ),
            ),
          ),
          new Container(
            child: new Tab(
              icon: Image.asset(
                'assets/images/assassin.png',
                width: 28,
                height: 28,
              ),
              child: Text(
                'Assassin',
                style: TextStyle(fontSize: 12),
              ),
            ),
          ),
          new Container(
            child: new Tab(
              icon: Image.asset(
                'assets/images/mage.png',
                width: 28,
                height: 28,
              ),
              child: Text(
                'Mage',
                style: TextStyle(fontSize: 12),
              ),
            ),
          ),
          new Container(
            child: new Tab(
              icon: Image.asset(
                'assets/images/marksman.png',
                width: 28,
                height: 28,
              ),
              child: Text(
                'Marksman',
                style: TextStyle(fontSize: 12),
              ),
            ),
          ),
          new Container(
            child: new Tab(
              icon: Image.asset(
                'assets/images/support.png',
                width: 28,
                height: 28,
              ),
              child: Text(
                'Support',
                style: TextStyle(fontSize: 12),
              ),
            ),
          ),
        ],
      ),
    );
  }
}
 

Ответ №3:

вы должны заменить каждый из этих элементов:

 Container(
            child: new Tab(
              icon: Image.asset(
                'assets/images/fighter.png',
                width: 28,
                height: 28,
              ),
              child: Text(
                'Fighter',
                style: TextStyle(fontSize: 12),
              ),
            ),
          ),
 

с:

 Container(
            child: new Tab(
              icon: Stack(
                  children:[
                     Image.asset(
                         YOUR ICON PATH,
                         width: 28,
                         height: 28,
                      ),
                      Image.asset(
                         Your Border path,
                         width: 28,
                         height: 28,
                      ),
                  ]
              ),
              child: Text(
                'Fighter',
                style: TextStyle(fontSize: 12),
              ),
            ),
          ),
 

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

1. но я хочу, чтобы это было так, когда я нажму на истребитель в это время, эта граница появится над истребителем после этого, когда я нажму на танк, чем в это время граница появится над танком и будет удалена из истребителя, я хочу, чтобы это было так, так что вы можете сказать, как мы можем это сделать