flutter筆記(九)-----單選框Radio、RadioListTile

flutter筆記匯總

之前學(xué)習(xí)了復(fù)選框和開(kāi)關(guān),還有個(gè)單選框,這里看一下。

Radio

還是先看constructor

Radio<T>({
  Key key,
  @required T value,
  @required T groupValue,
  @required ValueChanged<T> onChanged,
  Color activeColor,
  MaterialTapTargetSize materialTapTargetSize
})

這個(gè)Widget的constructor很簡(jiǎn)單,這幾個(gè)屬性前邊都介紹過(guò),怎么用看demo。

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 new MaterialApp(
      home: Scaffold(
        body: RadioDemo()
      )
    );
  }
}

enum SingingCharacter { lafayette, jefferson }

class RadioDemo extends StatefulWidget {
  @override
  _RadioDemoState createState() => new _RadioDemoState();
}

class _RadioDemoState extends State<RadioDemo> {
  SingingCharacter _character = SingingCharacter.lafayette;

  @override
  Widget build(BuildContext context) {
    return Container(
      padding: EdgeInsets.only(top: 20.0),
      child: Column(
        children: <Widget>[
          Radio(
            value: SingingCharacter.lafayette,
            groupValue: _character,
            activeColor: Colors.red,
            onChanged: (SingingCharacter value) {
              print(value);
              setState(() {
                _character = value;
              });
            },
          ),
          Radio(
            value: SingingCharacter.jefferson,
            groupValue: _character,
            onChanged: (SingingCharacter value) {
              print(value);
              setState(() {
                _character = value;
              });
            },
          )
        ]
      )
    );
  }
}

這里有點(diǎn)陌生的東西,接下來(lái)看一下。

enum

枚舉類(lèi)型。
官方文檔挺詳細(xì)的http://dart.goodev.org/guides/language/language-tour
這里就不詳細(xì)說(shuō)了

Column

這里簡(jiǎn)單介紹一下,后邊再詳細(xì)說(shuō),這個(gè)Widget可以簡(jiǎn)單的理解成列表類(lèi)似于html里邊的ul,子節(jié)點(diǎn)是children一組Widget。

T

看constructor的時(shí)候應(yīng)該就發(fā)現(xiàn)了,多了個(gè)<T>,這個(gè)是泛型,<>里邊是數(shù)據(jù)類(lèi)型,例如想定義一個(gè)List里邊只能放String,可以這樣寫(xiě)

var str = new List<String>();

這里T是備用類(lèi)型,實(shí)際上就是一個(gè)占位符。

RadioListTile

const RadioListTile<T>({
  Key key,
  @required T value,
  @required T groupValue,
  @required ValueChanged<T> onChanged,
  Color activeColor,
  Widget title,
  Widget subtitle,
  bool isThreeLine: false,
  bool dense,
  Widget secondary,
  bool selected: false,
  ListTitleControlAffinity controlAffinity: ListTileControlAffinity.platform
})

demo

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 new MaterialApp(
      home: Scaffold(
        body: RadioDemo()
      )
    );
  }
}

enum SingingCharacter { lafayette, jefferson }

class RadioDemo extends StatefulWidget {
  @override
  _RadioDemoState createState() => new _RadioDemoState();
}

class _RadioDemoState extends State<RadioDemo> {
  SingingCharacter _character = SingingCharacter.lafayette;

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        children: <Widget>[
          RadioListTile<SingingCharacter>(
            value: SingingCharacter.lafayette,
            title: Text('lafayette'),
            groupValue: _character,
            activeColor: Colors.red,
            onChanged: (SingingCharacter value) {
              print(value);
              setState(() {
                _character = value;
              });
            },
          ),
          RadioListTile<SingingCharacter>(
            value: SingingCharacter.jefferson,
            title: Text('jefferson'),
            groupValue: _character,
            onChanged: (SingingCharacter value) {
              print(value);
              setState(() {
                _character = value;
              });
            },
          )
        ]
      )
    );
  }
}

和單獨(dú)的Radio相比基本上沒(méi)啥區(qū)別。
相對(duì)于Radio多出來(lái)的屬性看這里:flutter筆記(七)-----復(fù)選框CheckBox、CheckboxListTile
CheckboxList里邊已經(jīng)詳細(xì)說(shuō)過(guò)了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容