Если бы я использовал StatefulWidget, то я бы слушал поток, например, внутри метода initState. Где бы я сделал эквивалент в StatelessWidget (хотел бы использовать Bloc с потоками для управления состоянием)? Я мог бы сделать это в методе сборки, но так как они повторяются, я задавался вопросом, существует ли более эффективный способ, чем проверка существующих слушателей, как показано ниже. Я знаю, что это избыточный и бесполезный пример, но он просто показывает проблему.
import "package:rxdart/rxdart.dart";
import 'package:flutter/material.dart';
final counter = BehaviorSubject<int>();
final notifier = ValueNotifier<int>(0);
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
if (!counter.hasListener)
counter.listen((value) => notifier.value += value);
return MaterialApp(
home: Scaffold(
body: Center(
child:FlatButton(
onPressed: () => counter.add(1),
child: ValueListenableBuilder(
valueListenable: notifier,
builder: (context, value, child) => Text(
value.toString()
),
),
)
),
)
);
}
}