gpt4 book ai didi

dart - 当我更新 mobX 状态并更新观察者 View 时抛出 'MobXException'

转载 作者:IT王子 更新时间:2023-10-29 07:11:41 25 4
gpt4 key购买 nike

我正在尝试 flutter 的 mobX 状态管理。但是每当我直接更新我的 @observable State 而不是调用 @action decorated method 时,它就会抛出 'MobXException'

下面的代码会给你一个正确的想法。

counter.dart

import 'package:mobx/mobx.dart';

part 'counter.g.dart';

class Counter = CounterBase with _$Counter;

abstract class CounterBase implements Store {
@observable
int value = 0;

@action
void increment() {
value++;
}
}

ma​​in.dart

import 'package:flutter/material.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
import './counter.dart';

void main() {
runApp(MyApp());
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Counter",
home: CounterExample(),
);
}
}

class CounterExample extends StatelessWidget {
final _counter = Counter();

@override
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(
title: const Text('Counter'),
),
body: Center(
child: Observer(
builder: (_) => Text(
'${_counter.value}',
style: const TextStyle(fontSize: 50),
)),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
// _counter.increment(); // WORKING !!
_counter.value = _counter.value+1; // NOT WORKING !!
},
tooltip: 'Increment',
child: const Icon(Icons.add),
),
);
}

使用增量方法是可行的,但为什么即使是一些简单的状态更改我也需要使用另一种方法?为什么生成的 setter 不够用?

最佳答案

But whenever I am updating my @observable State directly rather than calling an @action decorated method it is throwing 'MobXException'

这是一项功能。 MobX 有目的地阻止您在操作之外改变可观察对象。

改为将该逻辑移至您商店的方法中。

关于dart - 当我更新 mobX 状态并更新观察者 View 时抛出 'MobXException',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56009854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com