【问题标题】:Good pratice on componentize Widgets in flutter [duplicate]在颤振中组件化小部件的良好实践[重复]
【发布时间】:2021-06-08 21:46:49
【问题描述】:

我正在使用 Dart/Flutter 构建一个简单的应用程序。我尝试应用其他框架中的一些概念(例如“组件”),最后遇到了一个问题,即在这种情况下什么是好的做法。

到目前为止,这是我的家:

import 'package:flutter/material.dart';
import 'package:image_recognition_poc/components/layout/app_bar.dart';
import 'package:image_recognition_poc/components/layout/drawer.dart';

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        backgroundColor: Colors.teal[100],
        appBar: DefaultAppBar().build(context),
        drawer: DefaultDrawer().build(context),
        body: Container());
  }
}

这是我的小部件之一:

import 'package:flutter/material.dart';

class DefaultAppBar extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return AppBar(
      title: Text(
        'Portal parceiro',
        style: TextStyle(color: Colors.white),
      ),
      backgroundColor: Colors.teal[600],
      elevation: 0,
    );
  }
}

由于 Scaffold.appBar 字段仅接受实现类 WidgetPreferredSizeWidget,因此我构建了 DefaultAppBar 对象,如图所示 DefaultAppBar().build(context)

它有效,但我想知道这是否是好的做法,或者是否是激活此组件化的更好方法。

谢谢!

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    您不需要将上下文传递给构建函数,这是一项框架工作。 并且您的应用栏应该实现 PreferredSizeWidget。

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

    看看这个问题:https://stackoverflow.com/a/64325495/10795937

    【讨论】:

      猜你喜欢
      • 2011-06-14
      • 1970-01-01
      • 2019-04-22
      • 2022-09-24
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 2019-01-14
      • 1970-01-01
      相关资源
      最近更新 更多