在 Flutter GetX 中使用没有控制器的可观察变量
Using an observable variable without a controller in Flutter GetX
我对Get包没有完全理解的一点是是否总是需要将可观察变量放在控制器中。例如,这个案例有效:
import 'package:flutter/material.dart';
import 'package:get/get.dart';
void main() => runApp(App());
class App extends StatelessWidget {
final isTrue = true.obs;
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Demo',
theme: ThemeData(
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: Scaffold(
body: Center(
child: Obx(
() => FlatButton(
color: isTrue.value ? Colors.blue : Colors.red,
child: Text('Hey'),
onPressed: () => isTrue.value = !isTrue.value,
),
),
),
),
);
}
}
但是会不会有 leaks/problems,因此在这种情况下是否需要 GetXController?
正如@Baker 在他的评论中解释的那样,obs 流应该通过 GetXControllers 销毁,如果在无状态小部件中独立使用,它们将保留在内存中。
我对Get包没有完全理解的一点是是否总是需要将可观察变量放在控制器中。例如,这个案例有效:
import 'package:flutter/material.dart';
import 'package:get/get.dart';
void main() => runApp(App());
class App extends StatelessWidget {
final isTrue = true.obs;
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Demo',
theme: ThemeData(
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: Scaffold(
body: Center(
child: Obx(
() => FlatButton(
color: isTrue.value ? Colors.blue : Colors.red,
child: Text('Hey'),
onPressed: () => isTrue.value = !isTrue.value,
),
),
),
),
);
}
}
但是会不会有 leaks/problems,因此在这种情况下是否需要 GetXController?
正如@Baker 在他的评论中解释的那样,obs 流应该通过 GetXControllers 销毁,如果在无状态小部件中独立使用,它们将保留在内存中。