学习GetX和Flutter,并坚持使用官方网站上提供的示例



在运行下面的代码时,我遇到了一个异常:

生成Home(脏(时引发了以下_TypeError:类型"RxInt"不是类型"(((=>void(?'


代码:

import 'package:flutter/material.dart';
import 'package:get/get.dart';
void main() => runApp(
const GetMaterialApp(
home: Home(),
),
);
class Controller extends GetxController {
var count = 0.obs;
increment() => count++;
}
class Home extends StatelessWidget {
const Home({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
final Controller c = Get.put(Controller());
return Scaffold(
appBar: AppBar(
title: Obx(
() => Text('{Taps: ${c.count}'),
),
),
body: Center(
child: ElevatedButton(
onPressed: () => Get.to(Other()),
child: const Text('Go to others'))),
floatingActionButton: FloatingActionButton(
onPressed: c.increment(), child: const Icon(Icons.add)),
);
}
}
class Other extends StatelessWidget {
final Controller c = Get.find();
Other({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text('${c.count}'),
),
);
}
}

--请问这是怎么回事?

在构建小部件树之前放入Get.Put((。像这样:

import 'package:flutter/material.dart';
import 'package:get/get.dart';
void main() => runApp(
const GetMaterialApp(
home: Home(),
),
);
class Controller extends GetxController {
var count = 0.obs;
increment() => count++;
}
class Home extends StatelessWidget {
Home({Key? key}) : super(key: key);
final Controller c = Get.put(Controller());
@override
Widget build(BuildContext context) {

return Scaffold(
appBar: AppBar(
title: Obx(
() => Text('{Taps: ${c.count}'),
),
),
body: Center(
child: ElevatedButton(
onPressed: () => Get.to(Other()),
child: const Text('Go to others'))),
floatingActionButton: FloatingActionButton(
onPressed: c.increment(), child: const Icon(Icons.add)),
);
}
}
class Other extends StatelessWidget {
final Controller c = Get.find();
Other({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text('${c.count}'),
),
);
}
}

最新更新