簡體   English   中英

錯誤:未為類“_PomodoroState”定義方法“raisedButton”

[英]Error: The method 'raisedButton' isn't defined for the class '_PomodoroState'

我目前正在 android studio 中做一個 flutter 教程,我遇到了這個問題,我試圖創建一個類,試圖將它變成一個變量,但沒有運氣,我還命名了一個文件“raised_button.dart”並使用了 stful 小部件看看它是否有效但它不起作用這是我的代碼:

import 'package:flutter/material.dart';
import 'package:percent_indicator/circular_percent_indicator.dart';
import 'dart:async';
void main() => runApp(MaterialApp(

  debugShowCheckedModeBanner: false,
  home: Pomodoro(),
));

class Pomodoro extends StatefulWidget {
  const Pomodoro({Key? key}) : super(key: key);

  @override
  State<Pomodoro> createState() => _PomodoroState();
}

class _PomodoroState extends State<Pomodoro> {

  double percent = 0;
  static int TimeInMinut = 240;
  int TimeInSec = TimeInMinut * 60;

  late Timer timer;

  _StartTimer(){
    TimeInMinut = 240;
    int Time = TimeInMinut *60;
    double SecPercent = (Time/100);
    timer = Timer.periodic(Duration(seconds:1), (timer) {
      setState((){
        if(Time > 0){
          Time--;
          if(Time % 60 ==0){
            TimeInMinut --;
          }if(Time % SecPercent == 0){
            if(percent <1){
              percent += 0.01;
            }else{
              percent = 1;
            }
          }
        }else{
          percent = 0;
          TimeInMinut = 240;
          timer.cancel();
        }
      });
    });
  }
  @override
  Widget build(BuildContext context) {
    return SafeArea(
        child: Scaffold(
          body: Container(
            decoration: BoxDecoration(
              gradient: LinearGradient(
                colors: [Colors.orangeAccent, Colors.redAccent],
                begin: FractionalOffset(0.5,1)
              )
            ),
            width: double.infinity,
            child: Column(
              mainAxisAlignment: MainAxisAlignment.start,
              crossAxisAlignment: CrossAxisAlignment.center,
              children: <Widget>[
                Padding(
                  padding: EdgeInsets.only(top: 25.0),
                  child: Text(
                    "Pomodoro Clock",
                    style: TextStyle(
                      color: Colors.white,
                      fontSize: 40.0
                    ),
                  ),
                ),
                Expanded(
                    child: CircularPercentIndicator(
                      percent: percent,
                      animation: true,
                      animateFromLastPercent: true,
                      radius: 150.0,
                      lineWidth: 20.0,
                      progressColor: Colors.white,
                      center: Text(
                        "$TimeInMinut",
                        style: TextStyle(
                          color: Colors.white,
                          fontSize: 80.0
                        ),
                      ),
                    ),
                ),
                SizedBox(height: 10.0,),
                Expanded(
                  child: Container(
                    width: double.infinity,
                    decoration: BoxDecoration(
                      color: Colors.white,
                      borderRadius: BorderRadius.only(topRight: Radius.circular(30.0),topLeft: Radius.circular(30.0))
                    ),
                    child: Padding(
                      padding: EdgeInsets.only(top: 30.0, left: 20.0, right: 20.0),
                      child: Column(
                        children: <Widget>[
                          Expanded(
                              child: Row(
                                children: <Widget>[
                                  Expanded(
                                    child: Column(
                                        children: <Widget>[
                                          Text(
                                            "Focus Time",
                                            style: TextStyle(
                                              fontSize: 20.0,
                                            ),
                                          ),
                                          SizedBox(height: 10.0,),
                                          Text(
                                            "240",
                                            style: TextStyle(
                                              fontSize: 50.0
                                            ),
                                          ),
                                        ]
                                    ),
                                  ),
                                  Expanded(
                                    child: Column(
                                        children: <Widget>[
                                          Text(
                                            "Pause Time",
                                            style: TextStyle(
                                              fontSize: 20.0,
                                            ),
                                          ),
                                          SizedBox(height: 10.0,),
                                          Text(
                                            "20",
                                            style: TextStyle(
                                                fontSize: 50.0
                                            ),
                                          ),
                                        ]
                                    ),
                                  )
                                ],
                              )
                          ),
                          Padding(
                              padding: EdgeInsets.symmetric(vertical: 28.0),
                              child: raisedButton(
                                onPressed: _StartTimer,
                                  color: Colors.redAccent,
                                shape: RoundedRectangleBorder(
                                  borderRadius: BorderRadius.circular(100.0),
                                ),
                                child: Padding(
                                  padding: EdgeInsets.all(20.0),
                                  child: Text("Start focusing",
                                  style: TextStyle(
                                    color: Colors.white,
                                    fontSize: 22.0
                                  ),
                                  ),
                                )
                              ),
                          )
                                ],
                              )
                          ),
                      ),
                    ),
              ],
            ),
          ),
        ),
    );
  }
}

這是終端上顯示的內容

lib/main.dart:151:38: Error: The method 'raisedButton' isn't defined for the class '_PomodoroState'.
 - '_PomodoroState' is from 'package:pomodoris/main.dart' ('lib/main.dart').
Try correcting the name to the name of an existing method, or defining a method named 'raisedButton'.
                              child: raisedButton(

在那種特殊情況下我應該怎么做? 先感謝您。

我認為人們應該看到你的 raiseButton class 來獲得答案。 如果它是一個單獨的 class 這里應該是一個導入,但它不是。 並且 class 名稱應以大寫字母開頭

大寫 R。 它是RaisedButton ,而不是raisedButton

但是, RaisedButton已被貶低。 代替

raisedButton(
   onPressed: _StartTimer,
   color: Colors.redAccent,
   shape: RoundedRectangleBorder(
      borderRadius: BorderRadius.circular(100.0),
   ),
   child: Padding(

你想使用ElevatedButton 您還需要將樣式移動到新的樣式屬性,將顏色等傳遞給 ElevatedButton.styleFrom() 構造函數。

ElevatedButton(
   style: ElevatedButton.styleFrom(
      primary: Colors.red,
      shape: RoundedRectangleBorder(
         borderRadius: BorderRadius.circular(100.0),
      ),
   ),
onPressed: _StartTimer,
child: Padding(

但是...根據 Flutter 遵循的材料指南,此外觀也被貶低。 在此處查看如何使按鈕看起來既美觀又現代: https://material.io/components/buttons所有名稱也是 Flutter 中小部件的名稱。 如果您卡在那里,請隨時再次詢問!

**RaisedButton 在最新的 flutter 版本上已棄用。 您可以用 ElevatedButton 替換 RaisedButton **

 ElevatedButton(
            child: Text('ElevatedButton'))

Flutter 新版本不再使用 RaisedButton

相反,您可以使用高架按鈕

ElevatedButton(
            onPressed: () {
              print('login clicked');
            },
            child: Text(
              'Login',
              style: TextStyle(fontSize: 18.0, fontFamily: "Brand Bold"),
            ))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM