Flutter: как переопределить значение непрозрачности внутри дочернего виджета?
Можно ли изменить значение непрозрачности внутри дочернего виджета?
У меня есть список элементов, и я делаю их частично прозрачными, исходя из неактивного статуса.
ListView.builder(
itemBuilder:(c,i) {
if(status) return MyCard(active:status);
else return Opacity(opacity: 0.5, child: MyCard(active: status);
},
itemCount: 5,
);
Но теперь все виджеты, независимо от того, активны они или неактивны, должны отображать кнопку загрузки с полной видимостью.
class MyCard extends StatelessWidget{
///
Widget build(c){
return Column(
children:[
WidgetA(),
WidgetB(),
// this should be always fully visible.
// Can we override the parent's opacity property somehow?
DownloadButton(),
]
);
}
}
Возможно ли такое поведение при использовании непрозрачности? Или мне нужно посещать каждый из дочерних предметов отдельно?
2 ответа
Сворачивать
WidgetA
и
WidgetB
внутри
Column
чей родитель
Opacity
.
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: ListView(
children: <Widget>[
MyCard(false),
MyCard(true),
MyCard(false),
],
),
),
);
}
}
class MyCard extends StatelessWidget {
MyCard(this.status);
final bool status;
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Opacity(
opacity: status ? 1 : 0.3,
child: Column(
children: const <Widget>[
Text('Widget A'),
Text('Widget B'),
],
),
),
TextButton(
onPressed: () {},
child: const Text('DL Button'),
),
],
);
}
}
Возможно ли такое поведение при использовании непрозрачности?
Нет
Или мне нужно посещать каждый из дочерних предметов отдельно?
да
Вы можете разделить свой виджет, не содержащий
DownloadButton
а потом
Opacity
только для
MyCard