2017-01-15 2 views
1

package:flutter/material.dart을 사용하는 Flutter 응용 프로그램을 작성했습니다. iOS 시뮬레이터에서 앱을 실행하는 것은 다음과 같습니다. 보시다시피, 한 행의 구성 요소 사이에 패딩이 없으며 구성 요소는 패딩/여백/경계없이 위쪽, 아래쪽, 왼쪽 및 오른쪽에 도달합니다. 내 질문은 다음과 같습니다.Material Design 준수 패딩을 Flutter Scaffold에 어떻게 적용합니까?

변환 대상 및 드롭 다운 버튼 사이의 라벨 구성 요소 간격과 같은 재료 준수 패딩을 적용하는 권장 방법은 무엇입니까? 컨테이너에 구성 요소를 압축하고 그 안에 패딩을 적용할까요?

대단히 감사합니다.

import 'package:flutter/material.dart'; 
import 'converter.dart'; 
import 'model.dart'; 

const _appName = 'Temperature Converter'; 

void main() { 
    runApp(new MyApp()); 
} 

class MyApp extends StatelessWidget { 
    @override 
    Widget build(BuildContext context) { 
    return new MaterialApp(
     title: _appName, 
     theme: new ThemeData(
     primarySwatch: Colors.blue, 
    ), 
     home: new MyHomePage(title: _appName), 
    ); 
    } 
} 

class MyHomePage extends StatefulWidget { 
    MyHomePage({Key key, this.title}) : super(key: key); 

    final String title; 

    @override 
    _MyHomePageState createState() => new _MyHomePageState(); 
} 

class _MyHomePageState extends State<MyHomePage> { 
    final Model model = new Model(); 
    var _currentInput = const InputValue(); 

    @override 
    Widget build(BuildContext context) { 
    return new Scaffold(
     appBar: new AppBar(
     title: new Text(config.title), 
    ), 
     body: new Column(children: <Widget>[ 
     new Row(children: <Widget>[ 
      new Expanded(
       child: new Input(
        hintText: 'Temperature', 
        value: _currentInput, 
        onChanged: (input) => _currentInput = input)), 
      new DropdownButton(
       items: createUnit(), 
       onChanged: (temperatureUnit newValue) { 
       setState(() { 
        model.inUnit = newValue; 
       }); 
       }, 
       value: model.inUnit) 
     ]), 
     new Row(children: <Widget>[ 
      new Text("Convert to"), 
      new DropdownButton(
       items: createUnit(), 
       onChanged: (temperatureUnit newValue) { 
       setState(() { 
        model.outUnit = newValue; 
       }); 
       }, 
       value: model.outUnit), 
     ]), 
     new FlatButton(
      child: new Text('Calculate'), 
      onPressed:() { 
       setState(() { 
       double inTemp = stringToDouble(_currentInput.text); 
       model.inTemperature = inTemp; 
       model.calculateOutTemperature(); 
       }); 
      }), 
     new Text(model.outTemperatureAsString) 
     ]), // This trailing comma tells the Dart formatter to use 
     // a style that looks nicer for build methods. 
    ); 
    } 

    List<DropdownMenuItem> createUnit() { 
    var l = new List<DropdownMenuItem<temperatureUnit>>(); 
    // degrees Celsius 
    l.add(new DropdownMenuItem<temperatureUnit>(
     value: temperatureUnit.degreesCelsius, 
     child: new Text(unitDegreesCelsius))); 
    // degrees Fahrenheit 
    l.add(new DropdownMenuItem<temperatureUnit>(
     value: temperatureUnit.degreesFahrenheit, 
     child: new Text(unitDegreesFahrenheit))); 
    // Kelvin 
    l.add(new DropdownMenuItem<temperatureUnit>(
     value: temperatureUnit.kelvin, child: new Text(unitKelvin))); 
    return l; 
    } 
} 

문제는 떨림이 뭔가를 누락되었음을 의미하는 것은 아니다 :

Working Flutter application

응용 프로그램 코드입니다. 나는 단지 그것을 올바르게하고 싶다. ;-)

답변

2

일반적으로 Scaffold의 하위 항목으로 Block을 사용하는 것이 좋습니다. 설정할 수있는 값은 padding입니다.

Padding 위젯을 사용할 수도 있습니다.

0

는 난 단지

ButtonTheme.of(context).padding

가 그래서 지금은 최고의 솔루션이 패딩을 적용 할 컨테이너를 상수 값을 가지고 사용하는 것입니다 생각 패딩 값이 ButtonTheme을 알고있다.

아마도 틀 렸지만 어쩌면 모든 재료 패딩을 적용하는 위젯을 모르겠습니다.

관련 문제