#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. но я хочу, чтобы это было так, когда я нажму на истребитель в это время, эта граница появится над истребителем после этого, когда я нажму на танк, чем в это время граница появится над танком и будет удалена из истребителя, я хочу, чтобы это было так, так что вы можете сказать, как мы можем это сделать