169 похожих чатов

Import 'package:flutter/material.dart'; class HomeWidget extends StatelessWidget { const HomeWidget({

Key? key,
}) : super(key: key);

@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const ResultWidget(result: 24),
const SizedBox(height: 30),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: twoWidget,
),
],
),
),
);
}
}

List<TwoWidget> twoWidget = const [
TwoWidget(
text: 'title 1',
icon: Icons.airline_seat_legroom_reduced_sharp,
percent: 20,
isOnce: false,
),
TwoWidget(
text: 'title 2',
icon: Icons.airlines,
percent: 20,
isOnce: false,
),
TwoWidget(
text: 'title 3',
icon: Icons.add_comment_rounded,
percent: 20,
isOnce: true,
),
TwoWidget(
text: 'title 4',
icon: Icons.thumb_up_alt,
percent: 60,
isOnce: false,
),
TwoWidget(
text: 'title 5',
icon: Icons.ac_unit_sharp,
percent: 40,
isOnce: false,
),
];

class TwoWidget extends StatefulWidget {
final IconData icon;
final String text;
final int percent;
final bool isOnce;

const TwoWidget({
Key? key,
required this.icon,
required this.text,
required this.percent,
required this.isOnce,
}) : super(key: key);

@override
State<TwoWidget> createState() => _TwoWidgetState();
}

class _TwoWidgetState extends State<TwoWidget> {
// bool isOnce = false;

int result = 0;

// void _buttonDone(int percent) {
// print('1: $percent');
// result += percent;

// print('2: $result');

// setState(() {});

// ScaffoldMessenger.of(context).showSnackBar(
// const SnackBar(
// content: Text('Готово!'),
// ),
// );

// isOnce = true;
// }

@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
// onPressed: isOnce ? null : () => _buttonDone(widget.percent),
onPressed: () {},
style: ElevatedButton.styleFrom(
shape: const CircleBorder(),
padding: const EdgeInsets.all(16),
),
child: Icon(
widget.icon,
size: 32,
),
),
const SizedBox(height: 8),
Text(widget.text),
],
);
}
}

class ResultWidget extends StatelessWidget {
final int result;

const ResultWidget({
Key? key,
required this.result,
}) : super(key: key);

@override
Widget build(BuildContext context) {
return Text('$result %');
}
}

13 ответов

23 просмотра

Зачем тебе final result?

import 'package:flutter/material.dart'; final gk = GlobalKey(); class HomeWidget extends StatelessWidget { const HomeWidget({ Key? key, }) : super(key: key); @override Widget build(BuildContext context) { return Scaffold( body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ ResultWidget(key:gk, initResult: 24), const SizedBox(height: 30), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: twoWidget, ), ], ), ), ); } } List<TwoWidget> twoWidget = const [ TwoWidget( text: 'title 1', icon: Icons.airline_seat_legroom_reduced_sharp, percent: 20, isOnce: false, ), TwoWidget( text: 'title 2', icon: Icons.airlines, percent: 20, isOnce: false, ), TwoWidget( text: 'title 3', icon: Icons.add_comment_rounded, percent: 20, isOnce: true, ), TwoWidget( text: 'title 4', icon: Icons.thumb_up_alt, percent: 60, isOnce: false, ), TwoWidget( text: 'title 5', icon: Icons.ac_unit_sharp, percent: 40, isOnce: false, ), ]; class TwoWidget extends StatefulWidget { final IconData icon; final String text; final int percent; final bool isOnce; const TwoWidget({ Key? key, required this.icon, required this.text, required this.percent, required this.isOnce, }) : super(key: key); @override State<TwoWidget> createState() => _TwoWidgetState(); } class _TwoWidgetState extends State<TwoWidget> { bool isOnce = false; // int result = 0; void _buttonDone(int percent) { print('1: $percent'); final rw = gk.currentWidget as ResultWidget; rw.result.value += percent; setState(() {}); ScaffoldMessenger.of(context).showSnackBar( const SnackBar( content: Text('Готово!'), ), ); isOnce = true; } @override Widget build(BuildContext context) { return Column( mainAxisAlignment: MainAxisAlignment.center, children: [ ElevatedButton( onPressed: isOnce ? null : () => _buttonDone(widget.percent), // onPressed: () {}, style: ElevatedButton.styleFrom( shape: const CircleBorder(), padding: const EdgeInsets.all(16), ), child: Icon( widget.icon, size: 32, ), ), const SizedBox(height: 8), Text(widget.text), ], ); } } class ResultWidget extends StatelessWidget { final ValueNotifier<int> result; ResultWidget({ super.key, required int initResult, }) : result = ValueNotifier<int>(initResult); @override Widget build(BuildContext context) { return ValueListenableBuilder<int>( valueListenable: result, builder: (BuildContext context, int value, Widget? child) => Text('$value %') ); } }

или так https://pastebin.mozilla.org/bsHiBXUG

LD- Автор вопроса
Кринжoлог
import 'package:flutter/material.dart'; final gk...

Cпасибо!!😊 Я где-то читал что глобальные ключи использовать это плохой тон.. Подскажи, если это действительно так, как в моём случае мне правильней всего передать результат в другой виджет без доп.пакетов?

LD
Cпасибо!!😊 Я где-то читал что глобальные ключи ис...

Так и есть. Глобал переменные - плохой опыт

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

Яша
глобальные ключи можно использовать и в каких то м...

От глобальный ключей?? Денешься. Как минимум, можно создать инхерит с этим ключом

свифка (макс)
От глобальный ключей?? Денешься. Как минимум, можн...

вот здесь как от этого уйти https://docs.flutter.dev/cookbook/forms/validation ?

свифка (макс)
Тут разве глобал переменная?

я не про глобавильную переменную говорил, а про глобальный ключ

LD
Cпасибо!!😊 Я где-то читал что глобальные ключи ис...

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

LD
Cпасибо!!😊 Я где-то читал что глобальные ключи ис...

На ум приходит только inheritedwidget. Мб ещё как-то можно. Просто, я уже привык везде стейт менеджерами пользоваться, и давно не задумывался про такие вещи) А насчёт глобальных ключей, все зависит от ситуации, применяйте, где считаете необходимым (их же все таки зачем-то придумали)

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
14
Кстати а покупал кто-нибудь ЭЦП для подписи кода? А то у меня на некоторых компах и ОС иногда SmartScreen винды программу за вирус принимал. Если купить такую ЭЦП и подписыват...
Дмитрий Завгородний
15
Карта сайта