113 votes

L'AppBarDesign ne peut pas être affecté au type de paramètre 'PreferredSizeWidget'

Quelqu'un s'il vous plaît donner quelques informations pourquoi cela se produit?

Lorsque j'essaie d'ajouter une classe AppBarDesign qui implémente le flutter appBar donne l'erreur ci-dessous.

erreur: le type d'argument "AppBarDesign" ne peut pas être affecté au type de paramètre "PreferredSizeWidget". (argument_type_not_assignable à [flutterbyrajath] lib \ main.dart: 27)

     import 'package:flutter/material.dart';

    main() {
      runApp(new MyApp());
    }

    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Rajath\'s design ',
          debugShowCheckedModeBanner: false,
          theme: new ThemeData(primarySwatch: Colors.amber),
          home: new MyHomePage(key, 'App is Fun'),
        );
      }
    }

    class MyHomePage extends StatelessWidget {
      MyHomePage(Key key, this.title) : super(key: key);

      final title;

      @override
      Widget build(BuildContext context) {
        return new Scaffold(
          appBar: new AppBarDesign(key, title),
        );
      }
    }

    class AppBarDesign extends StatelessWidget {
      AppBarDesign(Key key, this.title) : super(key: key);

      final title;

      @override
      Widget build(BuildContext context) {
        return new AppBar(
          title: new Text(title),
        );
      }
    }

204voto

TuxWorld Points 1044

conseils utiles pour mettre en œuvre cela sans rechercher d'autres sujets:

 class ApplicationToolbar extends StatelessWidget with PreferredSizeWidget{
  @override
  Widget build(BuildContext context) {
    return AppBar( ... );
  }

  @override
  Size get preferredSize => Size.fromHeight(kToolbarHeight);
}

5voto

CopsOnRoad Points 4705

Capture d'écran:

entrez la description de l'image ici


Créez cette classe:

 class CustomAppBar extends PreferredSize {
  @override
  final Widget child;
  final double height;

  CustomAppBar({
    required this.height,
    required this.child,
  }) : super(child: child, preferredSize: Size.fromHeight(height));

  @override
  Widget build(BuildContext context) => child;
}

Usage:

 appBar: CustomAppBar(
  height: 100,
  child: Column(
    children: [
      Text('0'),
      Text('1'),
      Text('2'),
      Text('3'),
    ],
  ),
)

3voto

Vous pouvez également utiliser la méthode suivante pour concevoir votre barre d'applications dans un fichier séparé, puis l'utiliser dans toute votre application.

 Widget Custom_Appbar(){
  return AppBar(
        shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.vertical(bottom: Radius.circular(20))),
        title: Text(
          'Decimal to Binary & Vice Versa',
          style: TextStyle(fontWeight: FontWeight.w400, fontSize: 19),
        ));
}

Et puis utilisez-le comme ça

 return Scaffold(
      appBar: Custom_Appbar(),
)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X