Я использую dart 2.16.2 Raisedbutton onpressed Изменить страницу не влияет

я хочу изменить свою страницу, когда я нажимаю кнопку RaisedButton.

вот мой код:

Padding( padding: const EdgeInsets.fromLTRB(56, 0, 56, 24),          

child: RaisedGradientButton(
              onPressed: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => UserDetailPage()),
                );
                // ignore: avoid_print
                print("Button Click");
              },
              child: Text(
                'Got It',
                style: TextStyle(
                    color: Colors.white,
                    fontFamily: 'Nunito',
                    fontWeight: FontWeight.bold,
                    fontSize: 20.0),
              ),
              gradient: LinearGradient(
                colors: const <Color>[Colors.purple, Colors.blue],
              ),
)

)

Моя модель не меняется на странице, пожалуйста, помогите мне.

Ошибка предварительного просмотра не влияет на клик

Ваш виджет Padding находится внутри materialApp?

NetHawk 17.05.2022 22:56

да .. я использую приложение для заполнения материалов ..

Viandsyahrezah 17.05.2022 23:28

но если нет ничего плохого, что не так?

Viandsyahrezah 17.05.2022 23:39
0
3
29
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

вот мой полный код

import 'package:flutter/material.dart';
import 'package:bodymeasure/user_detail_page.dart';
import 'package:bodymeasure/RaisedButtonGradient.dart';

class InstructionPage extends StatefulWidget {
  static String tag = 'instruction-page';

  const InstructionPage({Key? key}) : super(key: key);
  @override
  _InstructionPageState createState() => _InstructionPageState();
}

class _InstructionPageState extends State<InstructionPage>
    with SingleTickerProviderStateMixin {
  late TabController controller;

  @override
  void initState() {
    super.initState();
    controller = TabController(vsync: this, length: 2);
  }

  @override
  void dispose() {
    controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        decoration: BoxDecoration(
          image: DecorationImage(
            image: AssetImage('lib/assets/splash_bg.png'),
            fit: BoxFit.cover,
          ),
        ),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          children: <Widget>[
            Padding(
              padding: const EdgeInsets.fromLTRB(24, 56, 24, 24),
              child: Column(
                children: const <Widget>[
                  Text(
                    "Bagaimana cara mengambil foto?\n",
                    style: TextStyle(
                        color: Colors.white,
                        fontSize: 20.0,
                        fontFamily: 'Nunito'),
                  ),
                  Text(
                    "Harap baca instruksi dengan benar sebelum melanjutkan dan bersiaplah",
                    style: TextStyle(
                        color: Colors.white,
                        fontSize: 15.0,
                        fontFamily: 'Nunito'),
                    textAlign: TextAlign.center,
                  ),
                ],
              ),
            ),
            Expanded(
              child: Padding(
                padding: const EdgeInsets.fromLTRB(24.0, 8.0, 24.0, 8.0),
                child: Column(
                  children: <Widget>[
                    TabBar(
                      controller: controller,
                      tabs: const <Widget>[
                        Tab(text: "Front"),
                        Tab(
                          text: "Side",
                        ),
                      ],
                    ),
                    Expanded(
                      child: Padding(
                        padding:
                            const EdgeInsets.fromLTRB(56.0, 8.0, 56.0, 8.0),
                        child: TabBarView(
                          controller: controller,
                          children: <Widget>[
                            DecoratedBox(
                              decoration: BoxDecoration(
                                image: DecorationImage(
                                    image: AssetImage(
                                        'lib/assets/front_instruction.jpg'),
                                    fit: BoxFit.fill),
                                borderRadius: BorderRadius.circular(10.0),
                              ),
                            ),
                            DecoratedBox(
                              decoration: BoxDecoration(
                                image: DecorationImage(
                                    image: AssetImage(
                                        'lib/assets/side_instruction.jpg'),
                                    fit: BoxFit.fill),
                                borderRadius: BorderRadius.circular(10.0),
                              ),
                            ),
                          ],
                        ),
                      ),
                    )
                  ],
                ),
              ),
            ),
            Padding(
                padding: const EdgeInsets.fromLTRB(56, 0, 56, 24),
                child: RaisedGradientButton(
                  onPressed: () {
                    Navigator.of(context).push(MaterialPageRoute(
                        builder: (context) => UserDetailPage()));
                    // ignore: avoid_print
                    print("Button Click");
                  },
                  child: Text(
                    'Got It',
                    style: TextStyle(
                        color: Colors.white,
                        fontFamily: 'Nunito',
                        fontWeight: FontWeight.bold,
                        fontSize: 20.0),
                  ),
                  gradient: LinearGradient(
                    colors: const <Color>[Colors.purple, Colors.blue],
                  ),
                )),
          ],
        ),
      ),
    );
  }
}

Я использую пользовательский градиент. но при нажатии этой кнопки кнопка не влияет.

import 'package:flutter/material.dart';

class RaisedGradientButton extends StatelessWidget {
  final Widget child;
  final Gradient gradient;
  final double width;
  final double height;
  final Function onPressed;

  const RaisedGradientButton({
    Key? key,
    required this.child,
    required this.gradient,
    this.width = double.infinity,
    this.height = 50.0,
    required this.onPressed,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Container(
      width: width,
      height: 50.0,
      decoration: BoxDecoration(
          gradient: gradient,
          boxShadow: const [
            BoxShadow(
              color: Colors.grey,
              offset: Offset(0.0, 1.5),
              blurRadius: 1.5,
            ),
          ],
          borderRadius: BorderRadius.circular(50.0)),
      child: Material(
        color: Colors.transparent,
        child: InkWell(
            onTap: () => onPressed,
            child: Center(
              child: child,
            )),
      ),
    );
  }
}
Ответ принят как подходящий

Измените следующий код в файле RaisedGradientButton.dart.

InkWell(
            onTap: () => onPressed,
            child: Center(
              child: child,
            )),

С:

  InkWell(
            onTap: onPressed,
            child: Center(
              child: child,
            )),

Имейте в виду, что если у вас есть функции в параметрах вашего виджета, вы всегда должны использовать «() =>» либо там, где вы создали свой виджет, либо там, где вы используете свой виджет только один раз.

Большое спасибо, сэр. Я действительно ценю твою помощь. и я добавил окончательный VoidCallback onPressed; Успех

Viandsyahrezah 18.05.2022 01:45

Другие вопросы по теме