Uczę się Fluttera i zaczynam od podstaw. Nie używam MaterialApp. Jaki jest dobry sposób na ustawienie koloru tła całego ekranu?
Oto, co mam do tej pory:
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!"));
}
}
Niektóre z moich pytań to:
- Jaki jest podstawowy sposób ustawiania koloru tła?
- Na co dokładnie patrzę na ekranie? Który kod „jest” tłem? Czy jest coś, na czym można ustawić kolor tła? Jeśli nie, jakie jest proste i odpowiednie „proste tło” (w celu namalowania koloru tła).
Dzięki za pomoc!
Możesz ustawić kolor tła na Wszystkie rusztowania w aplikacji jednocześnie.
wystarczy ustawić scaffoldBackgroundColor: w ThemeData
MaterialApp( title: 'Flutter Demo', theme: new ThemeData(scaffoldBackgroundColor: const Color(0xFFEFEFEF)), home: new MyHomePage(title: 'Flutter Demo Home Page'), );
źródło
Oto jeden ze sposobów, w jaki to zrobiłem. Nie wiem, czy są lepsze sposoby, ani jakie są kompromisy.
Kontener „stara się być jak największy”, zgodnie z https://flutter.io/layout/ . Kontener może
decoration
również mieć rozszerzenie BoxDecoration , które może mieć rozszerzeniecolor
(co jest kolorem tła).Oto próbka, która rzeczywiście wypełnia ekran kolorem czerwonym i zawiera napis „Hello, World!” do centrum:
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!"), ), ); } }
Uwaga, kontener jest zwracany przez funkcję MyApp build (). Pojemnik ma dekorację i dziecko, które jest wyśrodkowanym tekstem.
Zobacz to w akcji tutaj:
źródło
Jest na to wiele sposobów, wymieniam tutaj kilka.
Za pomocą
backgroundColor
Korzystanie
Container
wSizedBox.expand
Za pomocą
Theme
źródło
Scaffold( backgroundColor: Constants.defaulBackground, body: new Container( child: Center(yourtext) ) )
źródło
Na podstawowym przykładzie Fluttera możesz ustawić za pomocą
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. ); }
źródło
powinieneś zwrócić widget Scaffold i dodać widget do Scaffold
ssać jak ten kod:
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!")); ); } }
źródło
Myślę, że musisz użyć
MaterialApp
widżetutheme
i ustawićprimarySwatch
kolor, który chcesz. wygląda jak poniższy kod,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'), ); } }
źródło
i jest to inne podejście do zmiany koloru tła:
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,),); } }
źródło