草庐IT

dart - 在 flutter/dart 中重用小部件

coder 2023-07-23 原文

我有以下 Flutter 代码,我正在尝试弄清楚如何将第 1 部分放入一个单独的类中,以便我可以在多个屏幕上重用它,然后分别重用(不是同时,而是),如何将第 2 节(代码的较大部分)放入单独的类中,以及如何使用变量在多个页面上重用它以便能够更改标题。目前,我只是将整个代码复制并粘贴到每个屏幕中,但我知道必须有更好的方法来重用代码。

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Welcome to Flutter',
      home: Scaffold(

        //------------------START SECTION 2---------------------------------------------

        appBar: AppBar(
          backgroundColor: Colors.blue,
          title: Text(
            "Welcome",
            style: TextStyle(color: Colors.white),
          ),
          actions: <Widget>[
            // action button

            //------------------START SECTION 1---------------------------------------------

            PopupMenuButton<String>(
              //onSelected: showMenuSelection
              //icon: new Icon(Icons.add, color: Colors.blueGrey),
              itemBuilder: (BuildContext context) => <PopupMenuItem<String>>[
                    const PopupMenuItem<String>(
                        value: 'Item 1', child: Text('Item 1')),
                    const PopupMenuItem<String>(
                        value: 'Item 2', child: Text('Item 2')),
                  ],
            ),

            //------------------END SECTION 1---------------------------------------------

          ],
        ),

        //------------------END SECTION 2---------------------------------------------

        body: Center(
          child: Text('Hello World'),
        ),
      ),
    );
  }
}

最佳答案

VS 代码让您只需点击几下即可提取小部件,如果您使用的是 VS 代码 - 选择小部件代码开始的行。点击 Ctrl + .,选择 Extract widget 选项,输入您选择的名称。然后您可以自定义提取的小部件以接收不同的参数并相应地返回小部件。任何 IDE 都可以完成同样的操作,但我不知道该过程。

编辑 1:由于我现在无法发布屏幕截图,所以我发现这个 SO 答案可以提供帮助。 :) https://stackoverflow.com/a/51235410/4794396

关于dart - 在 flutter/dart 中重用小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54740514/

有关dart - 在 flutter/dart 中重用小部件的更多相关文章

  1. ruby-on-rails - 在 Rails 中分配和重用变量 - 设计模式 - 2

    我一直在使用相同的模式来返回json代码(参见下面的示例)。我正在收集照片并将其存储在变量中。如果存在标记参数,我将获得一个更具体的集合并将其重新分配给同一个变量。然后将其作为json返回。什么是更好的设计模式来实现同样的事情?photos=collection_of_photosifparams[:tag]photos=photos.find_all{|photo|somecondition}endrenderjson:photos 最佳答案 如果照片是ActiveRecord对象,您应该使用scope为您需要的确切数据生成适当的

  2. Flutter 环境变量配置和flutter doctor中的错误解决 - 2

    一、环境变量右键点击我的电脑-属性:然后找到环境变量 1.Android的SDK不在C盘的话需要额外配这个到用户环境变量:ANDROID_HOMED:\AndroidSDK2.然后在系统变量:Path中添加一条这样的值        D:\Flutter\flutter\bin             这个值写flutter包解压的实际地址即可 3.在系统变量中添加两个镜像变量:        变量名:FLUTTER_STORAGE_BASE_URL      变量值:https://storage.flutter-io.cn        变量名:PUB_HOSTED_URL      变量

  3. ruby-on-rails - 在多个 Rails 模型中重用方法 - 2

    此处为初学者ruby​​/rails问题。我有一个方法,我目前正在我的“用户”模型中使用。defgenerate_token(列)开始self[列]=SecureRandom.urlsafe_base64在User.exists时结束?(列=>self[列])结束我想在不同的模型中重复使用相同的方法,比如我的帐户模型。在哪里放置这样的代码以便在模型之间共享是个好地方?另外,为了获得调用类,我是否只使用“self.class”?谢谢 最佳答案 Rails4关注点就是为了完成这项工作。http://api.rubyonrails.org

  4. ruby-on-rails - Ruby On Rails - 重用错误消息部分 View - 2

    问题我试图在我的View中重用错误消息block。下面是positions/_error_messages.html.erb中写的blockTheformcontains.*问题是我必须在每个模型中创建类似的部分View,这有点像用不同的对象重复相同的代码,即@user、@client等。补救措施我在共享文件夹shared/_error_messages.html.erb中创建了一个erb并编写了以下代码。Theformcontains.*然后在查看文件中。positions/new.html.erb我写了下面的代码这意味着现在我可以在所有创建和更新操作中使用相同的代码。我想知道,这样

  5. ruby - 不同 Ruby 项目之间代码重用的最佳实践是什么? - 2

    伙计们!我是一名具有Java背景的软件开发人员,我正在使用Ruby网络框架(Padrino/Sinatra)开始一些项目。在我的java项目中,我通常有一些“公共(public)”项目,其类在多个项目中使用。例如,我有一个中央身份验证服务和一个存储用户配置文件的共享数据库。我所有使用此服务的项目都共享一些映射到用户配置文件数据库的模型。那么,尽管有框架、orm库等,跨多个Ruby项目共享代码的最佳方式是什么? 最佳答案 除此之外,ruby'sgems是重用代码公共(public)部分的最佳方式之一。Gem具有名称、版本号和描述,因此

  6. ruby-on-rails - Phusion Passenger 如何重用线程和进程? - 2

    我正在设置一个Apache2网络服务器,使用PhusionPassenger运行多个RubyonRails网络应用程序。我知道Passenger生成Ruby进程来处理请求。我有以下问题:如果必须同时处理多个请求,Passenger会生成多个进程还是多个(Ruby)线程?如何配置它以使其始终生成单线程进程?如果我有两个Rails应用程序,假设对应用程序A的请求进入进程1,然后对应用程序B的请求到达。进程1是否也可能处理此请求?什么时候以及如何做到这一点?换句话说,是否允许一个进程处理多个Rails应用程序的请求?我在多个URL和多个虚拟主机(例如http://和https://)中导出了

  7. ruby-on-rails - 在哪里放置可重用的方法以供 rails 中的 Controller 访问 - 2

    我有几个从我的Controller调用的方法,感觉它们应该被拉出并放入Controller外部的可重用类中。人们通常把这些东西放在哪里?我知道我可以将它们放入我的ApplicationController,但如果我认为我可以稍后在其他应用程序中使用这些方法,那似乎不是一个很好的解决方案。此外,我的Controller中有许多实用方法可能不会在其他Controller中使用,或者将来根本不会使用,但我觉得它们只会让我的Controller膨胀一点。人们通常会为了清洁而将它们移到某个地方,还是最终会得到一个巨大的Controller?我来自Java和Actionscript,我只是为这些东

  8. ruby - 如何在 Ruby 中创建可重用的 block /proc/lambda? - 2

    我想创建一个过滤器,并能够将其应用于数组或散列。例如:defisodd(i)i%2==1end我希望能够像这样使用它:x=[1,2,3,4]putsx.select(isodd)x.delete_if(isodd)putsx这看起来应该是直截了当的,但我不知道我需要做什么才能让它发挥作用。 最佳答案 创建一个lambda,然后使用&运算符转换为block:isodd=lambda{|i|i%2==1}[1,2,3,4].select(&isodd) 关于ruby-如何在Ruby中创建可重

  9. ruby-on-rails - 在 Ruby on Rails 中重用 Controller 之间代码的最佳实践 - 2

    我想分享一些Controller方法。在ruby​​onrails中执行此操作的最佳做​​法是什么?我应该创建一个我的Controller扩展的抽象类,还是应该创建模块并将其添加到每个Controller中?以下是我想分享的Controller方法:defdriving_directions@address_to=params[:address_to]@address_from=params[:address_from]@map_center=params[:map_center_start]#ifwewerenotgivenacenterpointtostartourmapon#le

  10. ruby - 重用 cucumber 步骤 - 2

    我想重用一些Cucumber步骤,但似乎找不到正确的方法。我想写一个这样的步骤:Given/^Iloginwith(.*)credentials$/|type|#dostuffwithtypebeingoneof"invalid"or"valid"end但是接下来还有一个步骤:Given/^Iloginsuccessfully$#call"GivenIloginwithvalidcredentials"end所以在测试用户身份验证时,我可以使用前者,但大多数其他地方,我可以使用后者,实际上不必重现代码。有没有办法调用其他步骤,或者我只是将逻辑放在辅助方法中,然后从每个任务中调用所述方法

随机推荐