iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 16
0
自我挑戰組

使用flutter建構Android和iOs APP系列 第 16

做一個toggle按鈕以及為文字加新字體

  • 分享至 

  • xImage
  •  

再度回顧一下檔案結構
https://ithelp.ithome.com.tw/upload/images/20181008/20111840tioAaZBwTd.png

目標是在登入頁面加一個toggle按鈕
並且在商品列表頁面,將標題字體換成Oswald

如此動畫

  1. main.dart
    routes: {
        '/': (BuildContext context) => AuthPage(),
        '/products': (BuildContext context) => ProductsPage(_products),
        '/admin': (BuildContext context) =>
            ProductsAdminPage(_addProduct, _deleteProduct),
    },
  1. pages/auth.dart
    import 'package:flutter/material.dart';
    
    class AuthPage extends StatefulWidget {
      @override
      State<StatefulWidget> createState() {
        return _AuthPageState();
      }
    }
    
    class _AuthPageState extends State<AuthPage> {
      String _emailValue;
      String _passwordValue;
      bool _acceptTerms = false;
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(...),
          body: Container(
            margin: EdgeInsets.all(10.0),
            child: ListView(
              children: <Widget>[
                TextField(...), //email輸入框
                TextField(...)),//密碼輸入框
                SwitchListTile(
                  value: _acceptTerms,
                  onChanged: (bool value) {
                    setState(() {
                      _acceptTerms = value;
                      //儲存現在toogle的變數
                      //true或false
                    });
                  },
                  title: Text('Accept Terms'),
                ),
                SizedBox(
                  height: 10.0,
                ),
                RaisedButton(
                  color: Theme.of(context).primaryColor,
                  textColor: Colors.white,
                  child: Text('LOGIN'),
                  onPressed: () {
                    Navigator.pushReplacementNamed(context, '/products');
                  },
                ),
              ],
            ),
          ),
        );
      }
    }

  1. products.dart
    
      Widget _buildProductItem(BuildContext context, int index) {
        return Card(
          child: Column(
            children: <Widget>[
              Image.asset(products[index]['image']),
              Container(
                padding: EdgeInsets.only(top: 10.0),
                child: Text(
                  products[index]['title'],
                  style: TextStyle(fontSize: 26.0, fontWeight: FontWeight.bold, fontFamily: 'Oswald'),
                  //設定字型大小,粗體,字體
                ),
              ),
              ButtonBar(
                alignment: MainAxisAlignment.center,
                children: <Widget>[
                  FlatButton(
                    child: Text('Details'),
                    onPressed: () => Navigator.pushNamed<bool>(
                        context, '/product/' + index.toString()),
                  )
                ],
              )
            ],
          ),
        );
      }
    

4.pubspec.yaml

      fonts:
        - family: Oswald
          fonts:
            - asset: assets/Oswald-Bold.ttf
                     //要記得在assets資料夾放入此字體
              weight: 700

主題來源:
Learn Flutter & Dart to Build iOS & Android Apps


上一篇
將新增功能移到admin頁面
下一篇
橫向排版與圓角背景和邊框
系列文
使用flutter建構Android和iOs APP25
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言