[英]Proper way to access Riverpod's state provider inside extensions in Flutter?
How to access counterProvider
inside extension?如何在扩展内访问
counterProvider
?
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
main() {
runApp(const ProviderScope(child: MyApp2()));
}
class MyApp2 extends ConsumerWidget {
const MyApp2({Key? key}) : super(key: key);
@override
Widget build(BuildContext context, WidgetRef ref) {
final watchCounter = ref.watch(counterProvider);
return MaterialApp(
home: Scaffold(
body: Text('$watchCounter'),
floatingActionButton: FloatingActionButton(
child: const Icon(Icons.add),
onPressed: () {
ref.read(counterProvider.notifier).adder();
},
),
),
);
}
}
class CounterNotifier extends StateNotifier<int> {
CounterNotifier() : super(0);
int counter = 0;
void adder() {
state = ++counter;
}
}
final counterProvider = StateNotifierProvider<CounterNotifier, int>(
(ref) => CounterNotifier(),
);
extension StringExtension on String {
String AddPrefix(){
// <---***--- How to access counterProvider here?
return '#$this';
}
}
You can pass it as a parameter to the AddPrefix()
function.您可以将其作为参数传递给
AddPrefix()
function。
Send to addPrefix() extension with function params.使用 function 参数发送到 addPrefix() 扩展。
extension StringExtension on String {
String addPrefix(String prefix){
return prefix + ' #$this';
}
}
Text('$watchCounter'.addPrefix("test")) // test 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.