-
this is code, import 'package:flutter/material.dart';
import 'package:flutter_solidart/flutter_solidart.dart';
void main() {
runApp(const MainApp());
}
class MainApp extends StatelessWidget {
const MainApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
debugShowCheckedModeBanner: false, home: SolidProvidersPage());
}
}
class NumberProvider {
NumberProvider(this.number);
int number;
}
class SolidProvidersPage extends StatelessWidget {
const SolidProvidersPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('SolidProviders'),
),
body: Solid(
providers: [
SolidSignal<Signal<NumberProvider>>(
create: () => createSignal(NumberProvider(1)),
// Do not create the provider lazily, but immediately
id: 1,
),
],
builder: (context) {
var data = context.observe<NumberProvider>(1);
return Center(
child: Column(
children: [
Text(
"${data.number}",
style: TextStyle(fontSize: 42),
),
SomeChild(),
],
),
);
},
),
);
}
}
class SomeChild extends StatelessWidget {
const SomeChild({super.key});
@override
Widget build(BuildContext context) {
final numberProvider = context.get<Signal<NumberProvider>>(1);
return SignalBuilder(
signal: numberProvider,
builder: (_, numberProvider, __) {
print('number: ${numberProvider.number}');
return ElevatedButton(
onPressed: () {
numberProvider.number++;
print('number: ${numberProvider.number}');
},
child: Text('number: ${numberProvider.number}'));
});
}
} |
Beta Was this translation helpful? Give feedback.
Answered by
nank1ro
Aug 23, 2023
Replies: 1 comment 1 reply
-
It's because you're mutating the numberProvider.update((value) => NumberProvider(value.number + 1)); In addition rename |
Beta Was this translation helpful? Give feedback.
1 reply
Answer selected by
red-co
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
It's because you're mutating the
number
field of the class directly and not the signal.If you change the
onPressed
to this it will work:In addition rename
numberProvider
herebuilder: (_, numberProvider, __) {
into something else because this is the value, not the signal.