Я изучаю Flutter и начинаю с самых основ. Я не использую MaterialApp. Какой хороший способ установить цвет фона всего экрана?
Вот что у меня есть на данный момент:
import 'package:flutter/material.dart';
void main() {
runApp(new MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return new Center(child: new Text("Hello, World!"));
}
}
Некоторые из моих вопросов:
- Какой основной способ установить цвет фона?
- Что именно я смотрю на экране? Какой код «является» фоном? Есть ли что-нибудь для настройки цвета фона? Если нет, то какой простой и подходящий «простой фон» (чтобы раскрасить фон).
Спасибо за помощь!
Вы можете установить цвет фона на Все скаффолды в приложении сразу.
просто установите scaffoldBackgroundColor: в ThemeData
MaterialApp( title: 'Flutter Demo', theme: new ThemeData(scaffoldBackgroundColor: const Color(0xFFEFEFEF)), home: new MyHomePage(title: 'Flutter Demo Home Page'), );
источник
Вот один из способов, который я нашел. Я не знаю, есть ли способы лучше и каковы компромиссы.
Контейнер «старается быть как можно большим», согласно https://flutter.io/layout/ . Кроме того, Container может принимать a
decoration
, который может быть BoxDecoration , который может иметьcolor
(который является цветом фона).Вот образец, который действительно заполняет экран красным цветом и помещает "Hello, World!" в центр:
import 'package:flutter/material.dart'; void main() { runApp(new MyApp()); } class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return new Container( decoration: new BoxDecoration(color: Colors.red), child: new Center( child: new Text("Hello, World!"), ), ); } }
Обратите внимание, что контейнер возвращается функцией MyApp build (). Контейнер имеет украшение и дочерний элемент, который является центрированным текстом.
Посмотрите это в действии здесь:
источник
Есть много способов сделать это, я перечислю несколько здесь.
С помощью
backgroundColor
Использование
Container
вSizedBox.expand
С помощью
Theme
источник
Scaffold( backgroundColor: Constants.defaulBackground, body: new Container( child: Center(yourtext) ) )
источник
На базовом примере Flutter вы можете установить с помощью
backgroundColor: Colors.X
Scaffold@override Widget build(BuildContext context) { // This method is rerun every time setState is called, for instance as done // by the _incrementCounter method above. // // The Flutter framework has been optimized to make rerunning build methods // fast, so that you can just rebuild anything that needs updating rather // than having to individually change instances of widgets. return Scaffold( backgroundColor: Colors.blue, body: Center( // Center is a layout widget. It takes a single child and positions it // in the middle of the parent. child: Column( // Column is also layout widget. It takes a list of children and // arranges them vertically. By default, it sizes itself to fit its // children horizontally, and tries to be as tall as its parent. // // Invoke "debug painting" (press "p" in the console, choose the // "Toggle Debug Paint" action from the Flutter Inspector in Android // Studio, or the "Toggle Debug Paint" command in Visual Studio Code) // to see the wireframe for each widget. // // Column has various properties to control how it sizes itself and // how it positions its children. Here we use mainAxisAlignment to // center the children vertically; the main axis here is the vertical // axis because Columns are vertical (the cross axis would be // horizontal). mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( 'You have pushed the button this many times:', ), Text( '$_counter', style: Theme.of(context).textTheme.display1, ), ], ), ), floatingActionButton: FloatingActionButton( onPressed: _incrementCounter, tooltip: 'Increment', child: Icon(Icons.add_circle), ), // This trailing comma makes auto-formatting nicer for build methods. ); }
источник
вы должны вернуть виджет Scaffold и добавить свой виджет внутри Scaffold
сосать как этот код:
import 'package:flutter/material.dart'; void main() { runApp(new MyApp()); } class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.white, body: Center(child: new Text("Hello, World!")); ); } }
источник
Я думаю, вам нужно использовать
MaterialApp
виджет, а также использоватьtheme
и установитьprimarySwatch
нужный цвет. выглядит как код ниже,import 'package:flutter/material.dart'; void main() { runApp(new MyApp()); } class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return new MaterialApp( title: 'Flutter Demo', theme: new ThemeData( primarySwatch: Colors.blue, ), home: new MyHomePage(title: 'Flutter Demo Home Page'), ); } }
источник
и еще один способ изменить цвет фона:
import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp(home: Scaffold(backgroundColor: Colors.pink,),); } }
источник