我是 Flutter 的初學者,我正在構建一個計數器應用程式,我想添加“清除”和“減少”的功能,而不僅僅是增加點擊時的計數器。我認為在 MyHomePage 類中添加另外兩個方法是合乎邏輯的,但它給了我錯誤
缺少“State.build”的具體實作。
我以另一種方式處理我的代碼,但是如果我想在該類中呼叫一個方法來做到這一點呢?這是我的代碼
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Hello Code Palace",
theme: ThemeData(primarySwatch: Colors.deepPurple),
home: MyHomePage(title: "Hello app!"));
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter;
});
/*void _decreaseCounter() {
setState(() {
--_counter;
});*/
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text(widget.title)),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text("The button has been pressed"),
Text(
" $_counter times",
style: new TextStyle(fontSize: 30.0),
)
],
),
),
floatingActionButton: Stack(children: <Widget>[
Padding(
padding: const EdgeInsets.only(right: 30.0, bottom: 24.0),
child: FloatingActionButton(
onPressed: ()=>setState(()=> --_counter),
tooltip: "Decrease",
child: Icon(Icons.remove),
),
),
Padding(
padding: const EdgeInsets.only(left: 265.0, bottom: 24.0),
child: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: "Increase",
child: Icon(Icons.add),
),
),
Padding(
padding: const EdgeInsets.only(left: 130.0, bottom: 24.0),
child: FloatingActionButton(
onPressed: ()=>setState(()=> _counter = 0),
tooltip: "Increase",
child: Icon(Icons.clear_all),
),
),
]),
);
}
}
如果您看到一種以更有條理的方式排列底部按鈕的方法,我也會很感激。
uj5u.com熱心網友回復:
您應該在_incrementCounter().
請檢查以下代碼:
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter;
});
}
void _decreaseCounter() {
setState(() {
--_counter;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
...
);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/426603.html
