zoukankan      html  css  js  c++  java
  • [Flutter] Creating, Importing & Using Dynamic Widgets from Other Files in a Flutter Application

    In this lesson we’ll learn how to import widgets we’ve created in other files & use them in our project. We'll also look at how to create dynamic properties in our widgets in order to make them reusable across our application.

    We have the CLI generate code:

    import 'package:flutter/material.dart';
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      // This widget is the root of your application.
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            // This is the theme of your application.
            //
            // Try running your application with "flutter run". You'll see the
            // application has a blue toolbar. Then, without quitting the app, try
            // changing the primarySwatch below to Colors.green and then invoke
            // "hot reload" (press "r" in the console where you ran "flutter run",
            // or simply save your changes to "hot reload" in a Flutter IDE).
            // Notice that the counter didn't reset back to zero; the application
            // is not restarted.
            brightness: Brightness.dark,
            primaryTextTheme: TextTheme(
              title: TextStyle(
                color: Colors.pinkAccent
              )
            ),
            primarySwatch: Colors.deepPurple,
            ),
          home: Scaffold(
            body: Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Container(
                     300,
                    height: 300,
                    alignment: Alignment.center,
                    decoration: BoxDecoration(
                      color: Colors.black,
                      borderRadius: BorderRadius.circular(500)
                    ),
                    child: Text(
                      "Hello Flutter",
                      style: TextStyle(
                        color: Colors.red,
                        fontWeight: FontWeight.w500,
                        fontSize: 22.0
                      )
                    )
                  )
                ],
              )
            )
          ),
        );
      }
    }

    We want to replace the highlighted part with reusable Widget.

    import 'package:flutter/material.dart';
    
    class Greeting extends StatelessWidget {
      // To get passed in arg
      Greeting({
        @required this.greeting,
        this.color = Colors.green
      });
      // need to create a variable to hold greeting
      final String greeting;
      final Color color;
      @override
      Widget build(BuildContext context) {
        return Text(
          this.greeting,
          style: TextStyle(
            color: this.color,
            fontSize: 32
          )
        );
      }
    }

    Use it:

    import 'package:flutter/material.dart';
    import 'package:my_flutter_app/Greeting.dart';
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      // This widget is the root of your application.
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            // This is the theme of your application.
            //
            // Try running your application with "flutter run". You'll see the
            // application has a blue toolbar. Then, without quitting the app, try
            // changing the primarySwatch below to Colors.green and then invoke
            // "hot reload" (press "r" in the console where you ran "flutter run",
            // or simply save your changes to "hot reload" in a Flutter IDE).
            // Notice that the counter didn't reset back to zero; the application
            // is not restarted.
            brightness: Brightness.dark,
            primaryTextTheme: TextTheme(
              title: TextStyle(
                color: Colors.pinkAccent
              )
            ),
            primarySwatch: Colors.deepPurple,
            ),
          home: Scaffold(
            body: Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Container(
                     300,
                    height: 300,
                    alignment: Alignment.center,
                    decoration: BoxDecoration(
                      color: Colors.black,
                      borderRadius: BorderRadius.circular(500)
                    ),
                    child: Greeting(greeting: "Hey you!", color: Colors.blue)
                  )
                ],
              )
            )
          ),
        );
      }
    }
  • 相关阅读:
    IPC之util.h源码解读
    新麦装机问题汇
    AngularJS2+调用原有的js脚本(AngularJS脚本跟本地原有脚本之间的关系)
    K60平台智能车开发工作随手记
    苹果手机上下载的文件在哪里?
    Mac电脑C语言开发的入门帖
    Python2中文处理纪要
    比特币核心概念及算法
    将dylib库嵌入macOS应用的方法
    那些令人惊艳的TensorFlow扩展包和社区贡献模型
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10299612.html
Copyright © 2011-2022 走看看